我们在游戏中,经常看到游戏的角色在面对敌人时都会拿出自己心爱的武器。今天,我们就一起来探讨一下,在射击游戏中角色拔枪的功能,它到底是如何实现的。避免文章篇幅冗长,关于拔枪的案例我将会连载三篇文章进行分享。
(1)首篇文章:如何实现动态创建武器和角色拔枪的动画。
(2)次篇文章:如何把角色“上身动画”和“下身动画”分开,让角色上身在播放其它动画(如:拔枪,射击,换弹等)时,下身怎样可以保持移动动画的播放。
(3)末篇文章:怎样使用IK,使角色持枪的双手更加贴合武器,显得更加平滑和真实。
目录:
1.创建动画器
2.设置拔枪动画
3.为角色手部设置挂载点
4.编写动态创建武器的代码
5.测试和运行
--------------------
一.创建动画器
在 Unity 的 “Project” 窗口中,点击鼠标右键菜单,然后选中“Create”,点击“Animator Controller”。创建一个 Animator 的动画组件,并且把组件拖拉到角色上进行绑定。
二.设置拔枪动画
1.第一步我们选中“拔枪动画”,然后点击右侧面板中的“Rig”页签,接着我们把选项“Animation Type”的值,切换成“Humanoid”,最后点击“Apply”应用按钮即可。
2.第二步打开角色动画器,先把“拔枪动画”拖拉到动画器上。然后点击左侧菜单的新增变量的按钮“+”号,创建一个Trigger类型的触发变量(我这里命名为“grab”)。
3.第三步我们需要创建过渡线。把“Any State”(任何状态下)的节点与“GrabGun”(拔枪动画)连接起来,然后再把“GrabGun”(拔枪动画)和“Idle”(站立动画)也连接上。
4.第四步选中“Any State”(任何状态下)的节点与“GrabGun”(拔枪动画)之间的过渡线,随后右侧菜单中,点击“Conditions”列表下的“+”号,添加“grab”变量来触发拔枪动画。最后记得把“Has Exit Time”的勾选去掉,因为拔枪动作可以随时发生。
5.第五步选中“GrabGun”(拔枪动画)和“Idle”(站立动画)之间的过渡线,这里需要把“Has Exit Time”的选项勾选上,因为我们需要等待拔枪动画播放完毕。然后点击“Setting”,把“Transition Duratior”的过渡时间设置1秒,可以让拔枪动画播放完后,更加平滑地过渡到站立动画。
三.为角色手部设置挂载点
1.首先点击角色对象,我们需要找到角色右手的骨络模型的位置,然后我们需要在右手的位置下创建一个空对象(该空对象非常重要,在文章末篇我将会分享IK的使用,那时也会用上它),接着我们来到场景中,把空对象移到角色右手上。
四.编写动态创建武器的代码
1.在 "Assets" 文件夹中新建一个名为 "Scripts" 的文件夹(你可以根据自己的喜好来命名),然后在该文件夹里创建一个新的 C# 脚本文件。接着将它拖拉到角色上。
2.编写动态创建武器的代码
代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。
原创来源于-谷宇博客:https://www.biguyu.top/home
3.回到Unity,点击选中角色对象,然后把角色右手下的空物体和武器模型的预制体拖拉到角色脚本的“Right Hand Position”变量和“Weapon Prefab”变量上,为其赋值即可。
五.测试与运行
亲测过程:进入 Play Mode 进行测试。玩家按下拔枪键(我这里设置为“空格”键),角色平滑过渡到“GrabGun”(拔枪动画)。动画播放完成后,角色也自然回到“Idle”站立动画。测试过程中,角色没有出现卡顿或不连贯的现象。关于角色手部位置不贴合武器的现象,现在先不用管。在末篇文章《【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧贴武器》。