今天我与大家分享射击游戏中常用的功能之一——举枪瞄准。在游戏中角色手持枪支,当玩家按下瞄准按键时,游戏角色会举起枪支进行瞄准。该功能细节相对比较多,所以我将会连载三篇文章进行分享:
(1)首篇文章:如何实现举枪的动画和代码,还有镜头的缩放设置。
(2)次篇文章:如何制作射击的准星。大家可以参考《【Unity3D实例-功能-瞄准】举枪瞄准(二)准星制作》
(3)末篇文章:角色的头部和枪支,如何跟随准星移动,实现“指哪打哪”的功能。大家可以参考《【Unity3D实例-功能-瞄准】举枪瞄准(三)角色头部和枪跟随准星》
目录:
1、安装Cinemachine插件
2、设置举放枪动画
3、创建和设置"普通"摄像机
4、创建和设置"瞄准"摄像机
5、实现举枪瞄准的代码
6、测试和运行
--------------------
一、安装Cinemachine插件
1、第一步我们需要安装一个摄像机插件。我们先点击Unity编辑器菜单栏中的“Window”选项,再从中选择“Package Manager”来安装我们需要的插件。
2、在Unity的Package Manager界面中,点击“Packages”部分。会弹出一个下拉框,你可以选择第一个选项是“Unity Registry”。接下来,在搜索框内输入“Cinemachine”来查找插件。再点击“install”按钮进行安装。(注意:如果你已经安装过该插件,那么显示的按钮会是“Remove”,而未安装的用户则会看到“install”按钮。
二、设置举放枪动画
1、我这里已经准备好了举枪动画和放下枪的动画,我们选中所有的动画,接着我们需要点击右侧菜单栏中的“Rig”页签,在“Animation Type”选项中,选择“Humanoid”,然后点击“Apply”应用。
2、接着双击打开动画机,我们需要把举枪动画和放下枪的动画拖拉到动画机上。选择“Parameters”页签,点击页签下的“+”号,创建一个Bool类型的触发变量(我这里命名为“aim”)
3、我们需要为动画创建过渡线。选中“Idle”(站立动画)的节点与“RifileAimIn”(举枪动画)连接起来。把“RifileAimIn”(举枪动画)和“RifileAimOut”(放下枪动画)连接上,反之,也连接起来,因为放下枪的过程中,也可以重新举枪。最后把“RifileAimOut”(放下枪动画)与“Idle”(站立动画)之间连起来。
4、选中“Idle”(站立动画)与“RifileAimIn”(举枪动画)之间的过渡线,随后右侧菜单中,点击“Conditions”列表下的“+”号,添加“aim”变量,并设置为“true”来触发举枪动画。再在把“Has Exit Time”的勾选去掉,因为举枪动作可以随时执行。
5、点击选中“RifileAimIn”(举枪动画)和“RifileAimOut”(放下枪动画)的过渡线,点击“Conditions”列表下的“+”号,添加“aim”变量,并设置为“false”,而反过来的过渡线设置“aim”变量设置为“true”,让其可以重新回到举枪动画。记得“Has Exit Time”的勾选去掉。
6、点击最后一条过渡线(“RifileAimOut”与“Idle”),确保“Has Exit Time”的勾选上即可,因为我们需要等待放下枪的动画播放完整。
三、创建和设置"普通"摄像机
1、我们在“Unity”的“Hierarchy”页签中,选中我们的角色,点击鼠标右键,在角色下创建一个空物体(我这里命名为“Aim”,建议把空物体拖拉到人物的颈部位置)。再选中空物体,点击鼠标右键,选择“Cinemachine”,再点击“Virtual Camera”创建虚拟摄像机(我命名为“BodyCamera”)。
2、接着我们来设置“Virtual Camera”虚拟摄像机。点击虚拟摄像机,在左侧属性栏中,把空物体拖拉到“Follow”属性。在“Body”类型下拉框中,选择“3rd Person Follow”。随后主要调整“Vertical FOV”缩放属性和“Camera Distance”距离属性。(只要把镜头调整到角色的背后,看起来舒服就行)
四、创建和设置"瞄准"摄像机
1、我们再次选中角色下的空物体,再创建一个“Virtual Camera”虚拟摄像机(我这里命名为“AimCamera”),在左侧属性栏中,同样把空物体拖拉到“Follow”属性。把最顶部激活相机的勾选去掉(因为我们在代码中来控制这个瞄准摄像机)。“Prionty”优先级属性调高一点(如果这个摄像机激活,让这个摄像机优先展示)。同样在“Body”类型中,选择“3rd Person Follow”。主要调整“Vertical FOV”缩放属性和“Camera Distance”距离属性。(把镜头拉近,人物调整到瞄准时的位置,自己感觉舒服就行)。
2、下拉瞄准摄像机的左侧属性栏,展开“Aim”属性,并选择“Aim”下拉框中的“POV”(镜头跟随鼠标移动)。随后调整“Vertical Axis”垂直度的范围和移动速度,再调整“Horizontal Axis”水平度的范围和移动速度即可。
3、最后还需要设置摄像机之间的切换速度。点击选择主摄像机“Main Camera”,找到“CinemachineBrain”,把“Default Blend”设置低一点,也就是镜头切换快一点(我这里设置为“0.3”)。
五、实现举枪瞄准的代码
1、创建一个 C# 脚本文件(我这里命名为“PlayerController”)。并将它拖拉到角色上,进行挂载。
2、功能代码
代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。
更多案例,原创来源于-谷宇博客:www.biguyu.top/home
已同步到公众号:搜索”谷宇小站“,关注支持!
六、测试与运行
亲测过程:点击“Play Mode”运行案例后,成功实现点击鼠标右键时,角色播放举枪动画,并且镜头切换到瞄准摄像机。松开鼠标右键后,恢复。