【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
今天是“角色拔枪”的第二篇文章,我将会告诉大家,如何实现角色的“上身动画”和“下身动画”分开,也就说上身执行拔枪、射击和换弹等动作,而下身则独立进行移动动画。这种分离式动画控制不仅增强了动画的灵活性,还为玩家带来更好的游戏体验。完整的拔枪功能:
(1)首篇文章:如何实现动态创建武器和角色拔枪的动画,大家可以参考《【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器》。
(2)末篇文章:如何使用IK来让角色持枪的双手更加贴合武器,显得更加平滑而真实,大家可以参考《【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧握武器》
目录:
1.创建动画器
2.配置拔枪动画
3.创建和设置Avatar Mask
4.Avatar Mask挂载到图层
5.测试和运行
--------------------
一.创建动画器
在 Unity 的“项目”面板中,点击鼠标右键,在弹出的菜单中,接着选中“Create”,点击“Animator Controller”创建动画器,然后把动画器拖拉到角色上进行绑定。
二.配置拔枪动画
1.(可选)第一步如果大家是按照我上一篇文章《【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器》来配置拔枪动画的话,点击打开动画器,把拔枪的动画和过渡线删掉,我们重新设置动画。
2.第二步打开动画器,点击选择“Layers”面板。在面板中,点击“+”添加一个新的动画图层,我这里它命名为“Weapon Layer”,然后把“RifleIdle”(站立动画)和“GrabRifleFromBehind”(拔枪动画)拖拉到动画器的“Weapon Layer”的动画图层中。
3.第三步我们选中“Weapon Layer”图层,我们点击“Any State”(任何状态下),右键选择“Make Transition”创建过渡线,我们需要把“Any State”的节点与“GrabGun”(拔枪动画)的节点通过过渡线连接起来,然后再把“GrabGun”(拔枪动画)和“Idle”(站立动画)也连接起来。
4.第四步在《【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器》文章中,已经创建好了触发变量“grab”,如果没有创建的小伙伴。可以选择动画器中“Parameters”面板,点击“+”,添加一个Trigger的触发变量。
5.第五步选中“Any State”(站立动画)与“GrabGun”(拔枪动画)之间的过渡线,然后在右侧面板中,点击“Conditions”列表旁边的“+”按钮,在触发变量下拉框中选择“grab”变量,用于激活拔枪动画。记得取消勾选“Has Exit Time”,因为拔枪操作可以根据玩家输入随时触发。
6.第六步选中“GrabGun”(拔枪动画)和“Idle”(站立动画)之间的过渡线,这里需要保持“Has Exit Time”的勾选状态是选中的,因为我们希望在拔枪动画完全播放结束后才进行过渡。接着点击“Settings”,将“Transition Duration”的过渡时长设置为1秒,使得拔枪动画结束后,角色能更平滑地切换到Idle站立状态。
三.创建和设置Avatar Mask
1.在 Unity 的“Projects”面板中,点击鼠标右键,在呼出的菜单中选择“Create”,点击“Avatar Mask”创建一个头像面具(我这边把Avatar Mask的名称命名为“UpperBody”)。
2.选中创建完成后的Avatar Mask,在右侧的面板中,点击展开“Humanoid”选项,把“人物”中的下身全部点击禁用掉。
四.Avatar Mask挂载到图层
打开动画控制器,选择动画器的“Layers”面板,点击“Weapon Layer”动画面板旁边的“齿轮”按钮,打开Mask设置。接着需要把“Weight”权重调到1。再点击“Mask”选项,选择刚刚我们创建的Avatar Mask。
五.测试与运行
亲测过程:进入 Play Mode 进行测试。当玩家按下拔枪键(我这里设置为“空格”键)触发拔枪动画时,同时按下WSAD角色移动按键,角色上身成功播放拔枪动画,下身仍然保持奔跑的动画。这时角色的手部位置还不能紧贴武器,没关系。在末篇文章《【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧握武器》中,我将会分享给大家IK的使用。