【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器

简介: 本文详细讲解了Unity射击游戏中角色拔枪功能的实现方法,包括动态创建武器、设置拔枪动画、角色手部挂载点配置及动画器逻辑搭建,完整呈现拔枪动作的制作流程。

4.png

我们在游戏中,经常看到游戏的角色在面对敌人时都会拿出自己心爱的武器。今天,我们就一起来探讨一下,在射击游戏中角色拔枪的功能,它到底是如何实现的。避免文章篇幅冗长,关于拔枪的案例我将会连载三篇文章进行分享。
(1)首篇文章:如何实现动态创建武器和角色拔枪的动画。
(2)次篇文章:如何把角色“上身动画”和“下身动画”分开,让角色上身在播放其它动画(如:拔枪,射击,换弹等)时,下身怎样可以保持移动动画的播放。
(3)末篇文章:怎样使用IK,使角色持枪的双手更加贴合武器,显得更加平滑和真实。

目录:

1.创建动画器
2.设置拔枪动画
3.为角色手部设置挂载点
4.编写动态创建武器的代码
5.测试和运行


一.创建动画器

在 Unity 的 “Project” 窗口中,点击鼠标右键菜单,然后选中“Create”,点击“Animator Controller”。创建一个 Animator 的动画组件,并且把组件拖拉到角色上进行绑定。
585a0d71-a38a-46bb-b1b2-eb7dcf17a4f6.png

二.设置拔枪动画

1.第一步我们选中“拔枪动画”,然后点击右侧面板中的“Rig”页签,接着我们把选项“Animation Type”的值,切换成“Humanoid”,最后点击“Apply”应用按钮即可。
221f4b5b6305a84dd4d1bd54654ae38d.png

2.第二步打开角色动画器,先把“拔枪动画”拖拉到动画器上。然后点击左侧菜单的新增变量的按钮“+”号,创建一个Trigger类型的触发变量(我这里命名为“grab”)。
1f688d33824ea2a99cb8fa82537884a2.png

3.第三步我们需要创建过渡线。把“Any State”(任何状态下)的节点与“GrabGun”(拔枪动画)连接起来,然后再把“GrabGun”(拔枪动画)和“Idle”(站立动画)也连接上。
4.第四步选中“Any State”(任何状态下)的节点与“GrabGun”(拔枪动画)之间的过渡线,随后右侧菜单中,点击“Conditions”列表下的“+”号,添加“grab”变量来触发拔枪动画。最后记得把“Has Exit Time”的勾选去掉,因为拔枪动作可以随时发生。
4eb190494ccef536caf3bf60d4e0670c.png

5.第五步选中“GrabGun”(拔枪动画)和“Idle”(站立动画)之间的过渡线,这里需要把“Has Exit Time”的选项勾选上,因为我们需要等待拔枪动画播放完毕。然后点击“Setting”,把“Transition Duratior”的过渡时间设置1秒,可以让拔枪动画播放完后,更加平滑地过渡到站立动画。
2cab6dc6b14af55082c1bd90dd9a1515.png

三.为角色手部设置挂载点

1.首先点击角色对象,我们需要找到角色右手的骨络模型的位置,然后我们需要在右手的位置下创建一个空对象(该空对象非常重要,在文章末篇我将会分享IK的使用,那时也会用上它),接着我们来到场景中,把空对象移到角色右手上。
f0ed4a371a8953c680fcdbb44ba7e736.png

四.编写动态创建武器的代码

1.在 "Assets" 文件夹中新建一个名为 "Scripts" 的文件夹(你可以根据自己的喜好来命名),然后在该文件夹里创建一个新的 C# 脚本文件。接着将它拖拉到角色上。
de90619ea1d84809b3f15042bdc650c6.png
2.编写动态创建武器的代码
代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。
原创来源于-谷宇博客:https://www.biguyu.top/home

3.回到Unity,点击选中角色对象,然后把角色右手下的空物体和武器模型的预制体拖拉到角色脚本的“Right Hand Position”变量和“Weapon Prefab”变量上,为其赋值即可。

536929857ac1efae107a07dca31d46b4.png

五.测试与运行

亲测过程:进入 Play Mode 进行测试。玩家按下拔枪键(我这里设置为“空格”键),角色平滑过渡到“GrabGun”(拔枪动画)。动画播放完成后,角色也自然回到“Idle”站立动画。测试过程中,角色没有出现卡顿或不连贯的现象。关于角色手部位置不贴合武器的现象,现在先不用管。在末篇文章《【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧贴武器》。
1a66f7a876664782b7e6f7ec4ad740f6.gif

目录
相关文章
|
9月前
|
C# 图形学 开发者
【Unity3D实例-功能-切换武器】切换武器(二)功能实现
本文为Unity3D切换武器功能的最终实现教程,介绍如何配置动画并编写武器架代码,实现角色多武器切换功能。内容包含动画设置、Unity准备、代码编写与测试等步骤,适合游戏开发者学习参考。
431 5
|
10月前
|
C# 图形学 开发者
【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
本文介绍了如何在Unity中实现角色行走与奔跑的切换功能,涵盖动画器创建、动画设置、角色移动代码编写及测试运行,帮助开发者提升角色移动的灵活性与操作体验。
373 0
|
9月前
|
图形学 开发者
【Unity3D实例-功能-切换武器】切换武器(一)动画配置
本文介绍了在Unity3D中实现角色切换武器功能的动画配置过程,包括创建动画器、设置动画、配置Base Layer、创建武器图层及测试运行,帮助开发者实现多武器切换效果。
273 10
|
10月前
|
C# 图形学 开发者
【Unity3D实例-功能-跳跃】角色跳跃
本文介绍了如何在 Unity 中实现角色跳跃功能,涵盖动画器创建、跳跃动画设置、脚本编写与测试等内容,帮助开发者快速掌握角色跳跃的核心实现技巧。
428 0
|
5月前
|
人工智能 前端开发 开发工具
国内独立开发者社区推荐
国内优质独立开发者社区推荐:涵盖SoloDev、掘金等综合平台,新趣集、创造者日报等产品展示渠道,SegmentFault、CSDN、开源中国等技术交流阵地,以及TapTap、Unity中国等游戏开发专区,还有V2EX、InfoQ、小红书等多元社区,助力开发者成长与创新。
|
10月前
|
图形学
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
本文介绍如何在Unity3D中实现角色“上身动画”与“下身动画”的分离控制,使角色在执行拔枪、射击等动作时,下身可独立进行移动动画,提升游戏动画灵活性与玩家体验。内容包含创建动画器、配置动画、设置Avatar Mask等步骤,并附测试效果。后续将讲解IK使用,使角色持枪更自然。
354 9
|
7月前
|
数据可视化 开发工具 图形学
《Unity隐藏效率神器:六类冷门工具重塑游戏开发流程》
本文聚焦Unity游戏开发中六类易被忽视的冷门便捷工具,深入解析其在场景管理、资源处理、调试可视化、动画与状态机、物理效果优化、协作与版本控制等场景的实用价值。这些工具无需复杂操作,却能精准解决批量参数调整、资源冗余清理、性能瓶颈定位、动画平滑过渡、物理效果调试、多人协作冲突等核心痛点,大幅减少重复机械劳作。通过可视化操作、批量处理、智能适配等特性,它们帮助开发者从繁琐事务中抽离,将精力聚焦于玩法设计与体验优化,既提升开发效率、降低出错概率,又缩短项目迭代周期,为Unity开发提供高效解决方案,助力打造高质量游戏作品。
251 1
|
11月前
|
C# 图形学 开发者
【Unity3D实例-功能-移动】复杂移动(Blend Tree方式)
本文介绍了使用Unity中Blend Tree实现角色移动控制的完整教程,涵盖动画器设置、Blend Tree创建、CharacterController组件添加及代码控制,帮助开发者实现流畅自然的角色动画效果。
349 0
|
11月前
|
图形学 开发者
【Unity3D实例-功能-移动】角色移动-通过WSAD(CharacterController方式)
本文介绍了如何在Unity中使用CharacterController组件实现角色灵活移动。内容包括模型准备、动画处理、添加组件、编写移动脚本及测试运行,帮助开发者快速掌握角色控制技巧,打造流畅的游戏体验。
538 0
|
10月前
|
C# 图形学
【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
本文介绍如何在Unity3D中实现角色下蹲功能,通过CharacterController组件实现一键下蹲与实时碰撞检测,避免角色穿越隧道穿模问题,提升游戏体验。
225 0