最终实现的效果如下:
教程时间:2021年12月29日
教程版本:Unity 2020.3
第一步,安装插件: Animation Rigging
- Windows → Package Manager
然后点击 安装即可!!!第二步 ,导入人物模型以及枪支模型
- 人物模型可以去 免费的人物模型以及大量动画 下载,这是 Adobe 公司的一个网站
- 枪支可以去unity官网下载免费的武器
此时,你应该有一个人物模型和枪支模型,然后一个持枪动画第三步,在场景中准备人物和枪支模型
- 必须将模型拆包才可以使用,否则无法操作哦!
PlayerPerfab 是我创建的空物体,然后将人物模型拖入了进去,等你准备好以后,你的层级关系应该是这样的第四步,正式开始制作
1. 在PlayerPerfab 下新建一个空物体,起名为 **WeaponHolder **,然后将武器模型拖入到 PlayerPerfab 下
这里注意下,如果你的枪支方向和人物朝向相反,请设置枪支旋转 180 ° 和人物朝向一致
2. 选中 WeaponHolder ,将 WeaponHolder 的坐标移动到枪支的枪托上
为什么这样做呢?请继续往下看
3. 将枪支拖入到 WeaponHolder 下,此时,并重置 WeaponHolder 的 transform
2 ,3 的作用是:当我们持枪时,枪托抵着肩膀,枪口绕着枪托旋转,所以,2 3 组成了下面的效果第五步,先给人物添加动画
1. 我们使用animator来给人物添加一个 持枪的 idle 动画,如下
2.我们新建一个animator Controller来让人物一开始就保持这个idle动画
这里的意思是,游戏一运行,则开始执行idle动画
3. 将这个控制器拖入到人物模型上的animator上
4.此时,运行游戏,人物会保持持枪动作
第六步 ,给PlayerPerfab 添加渲染骨骼的 Bone Renderer 和 控制约束的Rig Builder
1.将人物的所有骨骼选中,拖入到Bone Renderer 的 Transforms中,记住,是所有!!!
操作成功的标志如下:人物骨骼是渲染出来的,如果你认真操作发现没有被渲染,你点击别的地方就可以了,比如收起刚才的transforms
2. 在 playerPerfab 下,新建一个 Rig_WeaponPose,并且在 Rig_WeaponPose 下新建一个WeaponPose,作为枪的位置处理
3.给 Rig_WeaponPose 添加一个Rig 组件
4.给 WeaponPose 添加一个 Multi-Parent-Constraint 组件
给Constrained Object(我们要约束的对象) 添加 WeaponHolder (拖入),给Source Object(约束对象对齐的位置)添加WeaponPose(拖入)
5.然后在PlayerPerfab 的Rig Builder 组件中的Rig Layers 中,拖入我们的 Rig_WeaponPose
6.运行游戏,将枪的位置拖入到当前手的位置,然后复制transform的值
这里其实无所谓,大概位置就行,也就是说,你觉得你的手臂和手掌可以正确握住就可以了(甚至武器可以手掌只需要在一个小范围内即可),不用现在就调整到可以握住
7.然后停止运行游戏,将复制的值粘贴到WeaponPose 的 transform上
8.此时,我们运行游戏,人物已经可以(大概)持枪了
等等,这才刚刚开始!
未完待续