【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景

切割好素材之后,就可以使用图片资源了。拖拽图片到层级窗口就可以在场景中编辑地图,这是基础的方法。但它存在一个明显的问题就是如果创建一个关卡就需要反复的复制图片资源去调整位置,这样的效率是极其低下的。特别是在复杂的地图上,甚至更多的关卡中就需要消耗大量的时间。
所以使用unity提供的TileMap系统。

1.Tile Map的基本使用方法,导入精灵组并绘制场景地图

1.1 层级窗口添加TileMap

【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第1张图片

创建TileMap之后会在场景中出现Grid即网格,下拉菜单中重命名为Background,使它成为背景并保存当前场景。

1.2 启动瓦片绘制调色板创建Map

Window–2D–Tile Palette
在下拉菜单Create New Palette中创建新的Palette命名为Map,并保存在项目文件夹TileMap–TilePalette中。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第2张图片

1.3 将瓦片信息放到场景当中

拖拽切割好的图集到Map,并保存在目标文件夹TileMap--Tiles中。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第3张图片
在这里如果需要对图集信息进行修改可以点击Edit按钮,使用上方的工具栏对当前图集进行操作,如果不进行修改,需要关闭Edit按钮
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第4张图片
⚠️在Palette菜单中,有一栏Active TileMap,它指的是当前激活的TileMap即地图画在哪一张TileMap上,可以在下拉菜单选择对应的想画的平台。每次进行操作前需要留言当前激活的TileMap是谁。

1.4 绘制背景Background

首先将MainCamera的大小改为7
层级窗口中选中Grid--Background,在Paletee中选中需要的瓦片,使用方格工具可以在场景中大面积绘制地图信息。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第5张图片
⚠️当删除瓦片信息,就会漏出背景的样子,并且后续加载player时需要它放置在平台上而不与背景发生碰撞,所以需要在Grid下创建新的TileMap存放平台等。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第6张图片

2.安装2D-Extra扩展包

使用unity官方2D-Extra扩展包为TileMap系统增加额外的功能。
官方地址:https://github.com/Unity-Technologies/2d-extras

2.1 直接下载zip

下载zip压缩包直接解压在项目文件夹中就可以使用
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第7张图片

2.2 网络安装

在网络条件良好的情况下,复制git地址栏。

https://github.com/Unity-Technologies/2d-extras.git

在菜单栏Window -- Package Manager -- Add package from git URL添加地址【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第8张图片

安装好了之后,在新建文件夹右键菜单中可以看到增加的扩展包里各样式的瓦片.

3.创建Rule Tile规则瓦片

3.1 添加规则

创建一个RuleTile命名为Ground,即按照规则生成一个瓦片,在右侧的Inspector添加瓦片的规则:

在图片的九宫格中,中心表示图片位置,外围表示图片周围的8个方向。绿色箭头表示当前选择图片的箭头方向可以生存图片,反之红叉表示指定方向不能生成。

将定义好规则的Ground拖入Tile Paletee中,接着在Platform上绘制方格如图左侧所示,绘制出来的就是一个按照规则中心为空的四周有围墙的网格。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第9张图片

3.2 补充内角缺失

在实际绘制的过程中,可能存在以下情况,在拐角的地方呈现直角,造成内角缺失。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第10张图片
添加四个内角进行填充,并将空白处的八个方向全部填充。如下图所示:
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第11张图片

3.3 使用规则添加背景

用同样的方法为背景图添加规则瓦片,相比1.4的背景周边已经添加了规则,显得更加真实。如下图所示:
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第12张图片

4.修改游戏渲染层级

修改Sorting Layer为游戏场景添加层级,可以添加一个Background的层级,谁在下面谁会优先显示。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第13张图片
由此,根据前四步使用TileMap绘制出自己的游戏场景如下图
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第14张图片

5.为场景添加Collider碰撞体

现在的场景虽然画在不同的图层上,其实都是图片,图片与图片之间没有真实的物理模拟效果。需要创建的人物,环境因素或者敌人都需要站在平台上。,所以要为Platform添加TileMapCollider2D碰撞体,使它能与其他物体产生物理的碰撞。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第15张图片
通过上图可以发现,platform上有很多绿色的格子,这其实是为平台上的每一个瓦片都添加了一个盒型碰撞器。如果绘制平台的瓦片不是正方形,就会导致平台表面不平整,人物移动的过程中出现问题。此时需要添加一个额外的碰撞体,Composite Collider2D,同时也会添加一个刚体。
将刚体的Body Type改为Static,固定不变的,保证游戏运行场景不会掉落出屏幕。需要注意的是,当BodyType为Dynamic,把Gravity Scale修改为0,场景同样不会掉出屏幕,但是它会受到物理碰撞的影响,比如人物跳跃到平台会带着平台一起掉落。
此时场景中是一块一块的碰撞体,最后还需要把TileMapCollider2D的Used By Composite勾选上将场景变为一整块碰撞体。

6.创建场景中的其他物体

6.1 修改需要添加到场景中物体的参数

创建一些可以互动的物体来构成场景的背景元素增加游戏的乐趣。找到素材中提供的一些场景元素,把他们拖动到层级目录。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第16张图片
使用这些场景元素之前,需要更改他们的像素单位改为32Pixels Per Unit -- 32,过滤模式改为点采样模式Filter Mode -- Point,Point屏幕像素会去找最近的贴图像素点来作为输出,这种比较生硬,但是性能好,不抗锯齿。还有压缩改为NoneCompression -- None

6.2 为场景物体添加重力效果

以椅子为例子,把它拖拽到层级目录,修改Order in Layer为1置于场景上层。并为它添加刚体组件Rigidbody2D,主要考虑Mass质量和GravityScale重力比例。重力默认的设置是-9.8模拟向下的重力,质量并不会影响重力向下落的速度。
如果是添加一个碰撞体BoxCollider2D,它会把盒子内空余的部分也作为碰撞体,如果椅子的旋转角度是侧方向的,那么将不是一个真是的落地效果。为了在游戏中模拟炸弹爆炸的时候可以把周围的所有的物体炸飞,所以需要添加一个多边形碰撞体PolygonCollider2D。使用EditCollider拖拽形状点编辑角度使它更模拟真实的椅子角度,如下图所示。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第17张图片 【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第18张图片

遵照上述的方法同样为其他的场景物体添加多边形碰撞体,主要分为三步:

  1. 修改Order in Layer为1
  2. 添加Rigidbody2D
  3. 添加PolygonCollider2D并修改形状点

当游戏启动,所有的环境物体受重力影响掉落到平台底部,下面是启动游戏后的截图。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第19张图片

7.2D物理环境碰撞之间的关系

7.1 添加Layer图层

当场景中的物体叠加在一起时候,启动游戏游戏物体之间会产生碰撞。如下图所示,瓶子叠在桌子上,与桌子发生了碰撞。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第20张图片
在unity的层级菜单中的Layer选项系统默认设置了一些图层,这些图层之间其实是存在碰撞关系的。
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第21张图片
打开2D碰撞环境,菜单 ——Edit—— project settings ——Physics 2D
【Unity2DMobileGame_PirateBomb02】—— 使用TileMap系统搭建游戏场景_第22张图片
红色框选的区域是系统默认的图层。勾选中表示当前游戏物体图层可以与其他各图层发生碰撞关系。
游戏人物在移动的过程中是不与游戏中的北京发生碰撞的,只是在进行攻击的时候才与这些物体发生碰撞。所以需要给游戏物体设置不同的layer让他们之间拥有不同的碰撞关系。

  1. 添加两个新的Layer,Ground和Enviroment
  2. 设置背景平台为Ground,所有游戏场景的物体修改为Enviroment。
  3. 关闭游戏物体之间的碰撞进行测试

7.2 设置游戏物体不同质量

不同质量的游戏物体在受力的过程中会有不同反应。比如将桌子重力mass修改为3,那么它就比重力为1的瓶子受重能力越强。

7.3 调整其他参数

Rigibody2D的collision Detection检测碰撞的关系,修改为continues。让它持续不断的检测碰撞的环境,避免在后续快速移动过程中穿过墙壁碰撞体。

8.生成预制体

Assets下创建文件夹Prefabs,保存预制体。

你可能感兴趣的:(PirateBomb,游戏开发,游戏,unity)