Unity学习笔记(7) Unity2D骨骼动画制作流程
用骨骼动画最大的好处就是方便之后做换装系统。
无论对3Dor2D游戏都是这样的。
这篇博文记录一下2D骨骼动画的制作流程,参考b站麦扣的系列教程:
https://space.bilibili.com/370283072/channel/seriesdetail?sid=211996
素材制作
用PS做一个将人物各个部件(骨骼)都分解开来的人物模型。

导出时注意选择PSB模式,不然无法分层读取。

导入Unity
直接将PSB文件拖拽进去工作区,记得选择精灵模式为多图片模式:

骨骼绑定
进入Sprite Editor,用Skinning Editor模式:

绘制骨骼
用Create Bone创建骨骼。
需要有一个骨骼能够联动影响其它骨骼时,先左键选中此骨骼,然后创建其他的。

网格化
可以直接使用Auto Geometry,调整自动网格化的参数,生成受到骨骼影响的网格:



可以进入Sprite Sheet,双击选中某个部位,设定其受哪些骨骼的影响。

完成
用修改骨骼影响和权重刷后,就完成了骨骼制作,现在可以把它放到场景中了。
但是不要直接将做好的body这个预制体放进场景,他是个只读的不允许别的修改,
应该先创建一个空物件将人物挂载到它的儿子中:

IK反向动力学
听起来很高端,其实就是使得调整某个点时,对各种骨骼更好的作用,使得更符合人体动力学模型,减少人的工作量。
比如下蹲时调整身体向下,腿部两骨骼能形成一种屈膝的效果。
首先选中需要能够被控制的骨骼们的末端,创建一个空儿子,并移动到需要进行调整的位置,
这里我的是倒数第二个骨骼用来控制:

接下来在骨骼集的同级创建一个空物体挂载IK Manager 2D做动力学管理:

点+,添加一个肢体控制Limb,将刚刚创建的影响点移动到Effector中,并点Create Target创建控制目标。
下面就可以看到调整控制点,整个控制目标(两个腿部骨骼)都能自动调整:

可以点开Flip实现反向解算。
这一套做下来,本质就是通过末端点,向上寻找父、祖两代骨骼,并模拟人的肢体进行运动学解算,使得末端点保持在模型空间中的一个固定位置上:

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qeGONlfC-1643203681502)(https://raw.githubusercontent.com/camenkc/markDownPics/main/20220124131915.png)]](https://images2.imgbox.com/0c/2f/7TEjrm0K_o.png)
将其它部位也做好IK
添加动画
为Player挂载动画机,创建一个Idle动画。

点红圈开始录制,将所有的骨骼选中,右击Inspector面板中的Transform-Position,选择Add Key,
对Transform-Rotation也做如上操作。
不仅仅骨骼,对于IK的末端控制点也要记录他们的关键帧。
这样所有的骨骼都会在动画帧编辑器中有关键帧记录,下面调整各个关键帧的骨骼位置即可。

有时候不小心操作会看不到骨骼,只需要将如图的gizmos开过来即可
