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轴冻结

 

Unity横版2D游戏学习实例(03)- 角色移动跳跃下蹲&射线检测判碰撞

posted @ 2021-12-26 00:17  rkmao  阅读(3276)  评论(0编辑  收藏  举报