【Unity3D实例-功能-切换武器】切换武器(一)动画配置
今天,我们就一起来探讨一下,在游戏中角色如何切换武器的功能。由于该功能相对有一点复杂度,所以我将会连载两篇文章进行分享:
(1)首篇文章:如何配置切换武器的动画。
(2)次篇文章:如何编写武器架的代码,实现多武器切换功能。大家可以参考《【Unity3D实例-功能-切换武器】切换武器(二)功能实现》
目录:
1.创建动画器
2.设置动画
3.配置Base Layer图层
4.创建和配置武器图层
5.测试和运行
--------------------
代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。
原创来源于-谷宇博客:https://www.biguyu.top/home
一.创建动画器
在 Unity 的“Project”面板中,点击鼠标右键,选中“Create”,点击“Animator Controller”创建动画器,然后把动画器绑定到角色上。
二.设置动画
我这里已经准备好了动画,分别有角色普通的跑步动画和站立动画。角色手持手枪的拔枪动画、跑步动画和站立动画。最后是角色手持步枪的拔枪动画、跑步动画和站立动画。我们选中所有的动画,然后点击右侧菜单栏中的“Rig”页签,在“Animation Type”选项中,选择“Humanoid”,然后点击“Apply”应用。
三.配置Base Layer图层
1.第一步双击打开动画器,选中“Base Layer”图层。接着我们点击鼠标右键,在弹出的菜单中,选择“Create Sub-State Machine”,分别创建三个子动画机(我这里分别命名为“Base Movement、Pistol Movement和Rifle Movement”)。
2.第二步我们在左侧栏中,创建四个触发变量,分别为Bool类型的“run”用于触发角色的移动动画、Triggle类型的“grab”用于触发角色的拔枪动画、Triggle类型的“pistolMove”用于切换成pistol相对应的动画组(包括手持手枪的站立动画和移动动画)、Triggle类型的“rifleMove”用于切换成rifle相对应的动画组(包括手持步枪的站立动画和移动动画)。
3.第三步点击选中“Any State”和“Pistol Movement”之间的过渡线,设置触发变量为Triggle类型的“pistolMove”。然后再选中“Any State”和“Rifle Movement”之间的过渡线,设置触发变量为“rifleMove”。
4.第四步双击打开子动画机“Base Movement”,接着把角色的普通站立动画和移动动画拖拉到子动画机上。为站立和移动动画创建过渡线,并设置触发变量“Run”(“站立”过渡到“移动”,变量“Run”为true,反之变量“Run”为false)。最后去掉“Has Exit Time”的勾选,因为移动需要实时进行。
5.第五步同理双击打开子动画机“Pistol Movement”,然后把手枪的站立和移动动画拖拉到子动画机中,再创建站立动画和移动动画的过渡线,并选中过渡线,在右侧栏中,设置触发变量“Run”(“站立”->“移动”,变量“Run”为true,反之变量“Run”为false),最后去掉“Has Exit Time”的勾选。
6.第六步同理配置步枪子动画机。如下图:
四.创建和配置武器图层
1.点击动画器,选择“Layers”页签,点击页签下的“+”号,添加一个手枪的动画图层(我这里命名为“Pistol Layers”)。接着在图层内点击鼠标右键,选择“Create”,点击“Empty”,创建一个空动画(该空动画的目的是让拔枪动画不是在切换图层时就播放,并且避免循环播放拔枪)。
2.接着把拔枪动画拖拉到动画器上,然后创建过渡线连接“Any State”和“拔枪动画”。点击该过渡线,在右侧栏中设置触发变量为Trigger类型的“grab”变量。最后去掉“Has Exit Time”的勾选,随时可以进行拔枪操作。
3.最后在“拔枪动画”和“空动画”之间创建一条过渡线,让拔枪后回到“空动画”循环播放,形成闭环。要注意这里的“Has Exit Time”需要勾上,因为需要等待拔枪动画完成后,再过渡。然后点击“Setting”,设置过渡时间为“1”秒,让拔枪动画更平滑过渡到空动画。
4.同理创建步枪的动画图层和配置,如下图:
5.在 Unity 的“Projects”面板中,点击鼠标右键,选择“Create”,点击“Avatar Mask”创建一个遮罩(我这边把Avatar Mask的名称命名为“UpperBody”)。
6.选中创建完成后的Avatar Mask,在右侧的面板中,点击展开“Humanoid”选项,把“人物”中的下身全部点击禁用掉。
7.点击动画器,选中“Layers”页签,点击手枪图层右边的“小齿轮”打开图层设置,把权重Weight设置为0,把遮罩Avatar Mask添加到图层中,表示该图层只对人物上身有效果。再勾选上“IK Pass”,使图层执行OnAnimatorIK方法。(步枪图层设置同理,如下图)
五.测试与运行
亲测过程:完成的切换武器效果。