1、目标
创建一个角色,同时摄像机始终跟着角色移动,即角色始终位于屏幕中间。
2、流程
(1)创建Player空对象
再创建多个子对象,这样可以最大限度地分层不同部位的动画,同时增加了灵活性,允许Player定制不同的衣服,使用不同的工具。
创建body子对象,添加Sprite Renderer组件。
(2)创建Sorting Layer
1)Sorting Layer概念
Sorting Layer:排序层级,影响物体渲染的顺序。
渲染的基本规则:按照如下规则依次来确定渲染排序(先渲染的会被后渲染的覆盖。仅当前一个条件相同时,才会比较下一个条件。)
- 物体的Sorting Layer。根据Tags & Layers中的顺序,越靠上的SortingLayer越先渲染。
- 物体的OrderInLayer。数字越小越先渲染。
- 物体距离摄像机的距离。越远的越先渲染。
2)创建流程
点击“Layers”,然后点击“+”号新增Instances层级。
然后设置body对象的Sorting Layer为Instances,并且设置Order In Layer为1。
(3)创建子对象
依次创建其他子对象,每次修改Order In Layer值+1。
每个子对象对应的sprite信息如下:
body:
hair:
hat:
arms:
equippedItem / tool / toolEffect:
(4)添加Rigidbody 2D
给Player对象添加Rigidbody 2D,并且设置参数如下:
(5)设置Sprite Sort Point
仅当Draw Mode属性为Simple时这个属性才被使用。Main Camera默认投影为正交投影,此投影方式下Unity按照Sprite相对于Camera的距离的顺序进行渲染。Sprite Sort Point决定了Sprite计算距离的位置。
所有子对象一起设置为Pivot。
为什么设置为Pivot?
选中Customised_farmer后,点击Sprite Editor。
可以看到每个Sprite的枢轴在Pivot下方的小圆点。
(6)添加Sorting Group
给Player添加Sorting Group组件,并且设置参数如下:
分组的作用:确保所有子对象都被排序了,形成单一的个体。
(7)设置相机跟随
设置CinemachineCamera的Follow为Player对象。
为了演示效果更好,调整Main Camera的背景色为墨绿色。
同时添加4个草堆作为参照物。
执行程序,可以移动Player对象Transform中的x值,效果如下: