Unity横版2D游戏学习实例(02)- Sorting Layer分层&添加角色&碰撞体和刚体
一、使用Sorting Layer对图像分层
在Unity中,2D的界面中一旦放入多个图像就需要对这些图像进行分层,以此区分哪个图显示在前哪个图显示在后。分层设置一般在Render(渲染器)的组件中Sorting Layer属性中设置。
这里我们在Sorting Layer中添加一些图层方便对以后加入游戏的图像进行分层。
添加Sorting Layer的两种方式
1.在工具栏Edit -> Project Settings -> Tags and Layers -> Sorting Layers中添加
2.随便选择一个有Render组件的游戏对象,在检查器Inspector中,选择Render组件下拉选择Add Sorting Layer
如图这里添加了5个层,Background、Environment、Platforms、Player、Foreground。在Sorting Layers中越下面的Layer显示越前。而同Sorting Layer时,Order In Layer数值越大越前。
(小技巧:新加到游戏中的图像为Default默认层,这里可以把Default层放在移到了最下面,这样一来添加的新图像会显示在最前面,方便我们调整。)
顺便设置一下游戏中已有的图像的图层,背景back -> Background,地面Tilemap -> Platforms
二、添加角色
在下图位置找到我们的角色Fox,把它拖到Hierarchy窗口中改名为Player,然后给它设置Sorting Layer -> Player
(如果之前在Sorting Layers中把Default移到了最下面,那么它就会显示在最上面,否则刚放入游戏中时可能会被背景挡住看不到)
三、碰撞体Collider和刚体Rigidbody设置
在游戏中判断两个“图像”是否接触,需要设置碰撞体Collider,而刚体Rigidbody则是赋予质量、速度、重力等物理特性。
1.在Hierarchy中选中Player 或 在Sence窗口中选中Player,在其Inspector窗口最下面选中添加组件 Add Component,添加一个碰撞体 Box Collider 2D,刚体 Rigidbody 2D。
2.选中Tilemap在其Inspector窗口最下面选择Add Component,添加一个Tilemap碰撞体 Tilemap Collider 2D。
3.调整Player的碰撞体
在Collider组件中选中Edit Collider,物体上就会显示 可编辑的碰撞体边界,拖拽这些边界可以调整碰撞体Collider的范围。如下图
另外也可以通过Offset,Size属性直接修改碰撞体Collider的边界(这里设置了一个合适的数值,方便之后控制)
4.调整Tilemap的碰撞体
Tilemap的碰撞体比较特殊,因为Tilemap是我们一块块“画”上的,所以当选中Tilemap时我们能看到每块Tilemap都有一个碰撞体
这里我们可以通过Used By Composite属性来把他们合为整个碰撞体。
添加完Composite Collider 2D后,地图的碰撞体就变成了一整块了。
5. 调整刚体Rigidbody
当Tilemap添加了Composite Collider 2D后,会自动添加一个Rigidbody 2D,需要把Body Type设置为静态Static,否则地面会掉下去。
同时也需要在Player的Rigidbody上修改一些设置,选择下图选项
如此一来,运行游戏后我们可以看到角色稳稳的落在了地面上。接下来就要开始进行代码编写了。
相关属性介绍
Collision Detection (碰撞检测),用于控制避免高速运动的游戏对象穿过其他的对象而未发生碰撞。
(1)Discrete(离散):对场景中的所有其他碰撞体 (Collider) 全部使用离散 (Discreet) 碰撞检测。该项为默认值。
(2)Continuous (连续):对刚体 (Rigidbody) 进行碰撞测试时,对带有刚体的动态碰撞体 (Collider) 使用离散 (Discreet) 碰撞检测;对不带刚体的静态网格碰撞体 (static Mesh Collider)使用连续 (Continuous) 碰撞检测。
Interpolate (插值处理),用于控制刚体运动的抖动情况。
(1)None:不应用插值。
(2)Interpolate:内插。变换(Transform) 基于上一帧的变换 (Transform) 进行平滑处理。
(3)Extrapolate:外插。变换 (Transform) 基于下一帧的估计变换 (Transform) 进行平滑处理。
Constraints (约束),对刚体 (Rigidbody) 运动的限制。这是2D游戏,所以需要把游戏中运动的物体(如:玩家,敌人)Z轴冻结
本文来自博客园,作者:rkmao,转载请注明原文链接:https://www.cnblogs.com/rkmao/p/15713630.html