最终实现的效果如下:

unity换枪支 unity怎么让人拿枪_unity换枪支

教程时间:2021年12月29日

教程版本:Unity 2020.3

第一步,安装插件: Animation Rigging

  1. Windows → Package Manager

    然后点击 安装即可!!!

第二步 ,导入人物模型以及枪支模型

  1. 人物模型可以去 免费的人物模型以及大量动画 下载,这是 Adobe 公司的一个网站
  2. 枪支可以去unity官网下载免费的武器
    此时,你应该有一个人物模型和枪支模型,然后一个持枪动画

第三步,在场景中准备人物和枪支模型

  1. 必须将模型拆包才可以使用,否则无法操作哦!

    PlayerPerfab 是我创建的空物体,然后将人物模型拖入了进去,等你准备好以后,你的层级关系应该是这样的

第四步,正式开始制作

1. 在PlayerPerfab 下新建一个空物体,起名为 **WeaponHolder **,然后将武器模型拖入到 PlayerPerfab 下

这里注意下,如果你的枪支方向和人物朝向相反,请设置枪支旋转 180 ° 和人物朝向一致

unity换枪支 unity怎么让人拿枪_Adobe_02

2. 选中 WeaponHolder ,将 WeaponHolder 的坐标移动到枪支的枪托上

unity换枪支 unity怎么让人拿枪_Adobe_03

为什么这样做呢?请继续往下看

3. 将枪支拖入到 WeaponHolder 下,此时,并重置 WeaponHolder 的 transform
2 ,3 的作用是:当我们持枪时,枪托抵着肩膀,枪口绕着枪托旋转,所以,2 3 组成了下面的效果

unity换枪支 unity怎么让人拿枪_unity换枪支_04

第五步,先给人物添加动画

1. 我们使用animator来给人物添加一个 持枪的 idle 动画,如下

unity换枪支 unity怎么让人拿枪_vr_05

2.我们新建一个animator Controller来让人物一开始就保持这个idle动画

unity换枪支 unity怎么让人拿枪_vr_06


这里的意思是,游戏一运行,则开始执行idle动画

3. 将这个控制器拖入到人物模型上的animator上
4.此时,运行游戏,人物会保持持枪动作

第六步 ,给PlayerPerfab 添加渲染骨骼的 Bone Renderer 和 控制约束的Rig Builder

unity换枪支 unity怎么让人拿枪_unity_07

1.将人物的所有骨骼选中,拖入到Bone Renderer 的 Transforms中,记住,是所有!!!

unity换枪支 unity怎么让人拿枪_Adobe_08

操作成功的标志如下:

unity换枪支 unity怎么让人拿枪_unity换枪支_09


人物骨骼是渲染出来的,如果你认真操作发现没有被渲染,你点击别的地方就可以了,比如收起刚才的transforms

2. 在 playerPerfab 下,新建一个 Rig_WeaponPose,并且在 Rig_WeaponPose 下新建一个WeaponPose,作为枪的位置处理

unity换枪支 unity怎么让人拿枪_unity_10

3.给 Rig_WeaponPose 添加一个Rig 组件

unity换枪支 unity怎么让人拿枪_vr_11

4.给 WeaponPose 添加一个 Multi-Parent-Constraint 组件

unity换枪支 unity怎么让人拿枪_vr_12

给Constrained Object(我们要约束的对象) 添加 WeaponHolder (拖入),给Source Object(约束对象对齐的位置)添加WeaponPose(拖入)

5.然后在PlayerPerfab 的Rig Builder 组件中的Rig Layers 中,拖入我们的 Rig_WeaponPose

unity换枪支 unity怎么让人拿枪_Adobe_13

6.运行游戏,将枪的位置拖入到当前手的位置,然后复制transform的值

这里其实无所谓,大概位置就行,也就是说,你觉得你的手臂和手掌可以正确握住就可以了(甚至武器可以手掌只需要在一个小范围内即可),不用现在就调整到可以握住

7.然后停止运行游戏,将复制的值粘贴到WeaponPose 的 transform上

unity换枪支 unity怎么让人拿枪_Adobe_14

8.此时,我们运行游戏,人物已经可以(大概)持枪了

等等,这才刚刚开始!

未完待续