当前位置: 首页 > news >正文

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

我们在游戏中,经常看到游戏的角色在面对敌人时都会拿出自己心爱的武器。今天,我们就一起来探讨一下,在射击游戏中角色拔枪的功能,它到底是如何实现的。避免文章篇幅冗长,关于拔枪的案例我将会连载三篇文章进行分享。

(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的使用-紧贴武器》。

http://www.lryc.cn/news/621837.html

相关文章:

  • 非中文语音视频自动生成中文字幕的完整实现方案
  • 【HarmonyOS】鸿蒙应用迁移实战指南
  • STM32传感器模块编程实践(十四)DIY语音+满溢检测智能垃圾桶模型
  • 开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘
  • 17.3 删除购物车商品
  • 【科研绘图系列】R语言绘制多种饼图
  • 20day-人工智能-机器学习-线性回归
  • 超高车辆碰撞预警系统如何帮助提升城市立交隧道安全?
  • 【机器学习深度学习】生成式评测
  • 金融项目高可用分布式TCC-Transaction(开源框架)
  • 服装企业客户满意度调查:民安智库的市场调研赋能实践(北京市场调查)
  • 汽车行业 AI 视觉检测方案(二):守护车身密封质量
  • 指针类型:解引用与运算的关键
  • 电子电气架构 --- 探索软件定义汽车(SDV)的技术革新
  • 基于多模型的零售销售预测实战指南
  • Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
  • 【java】对word文件设置只读权限
  • 英文PDF翻译成中文怎么做?试试PDF翻译工具
  • Canal 技术解析与实践指南
  • ffmpeg 安装、配置与使用完全指南
  • 【python实用小脚本-187】Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导
  • fastdds.ignore_local_endpoints 属性
  • PDF Replacer:高效便捷的PDF文档内容替换专家
  • 基于 Spring AI + Ollama + MCP Client 打造纯本地化大模型应用
  • JavaScript(JS)DOM(四)
  • 大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
  • MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)
  • 代码随想录Day51:图论(岛屿数量 深搜广搜、岛屿的最大面积)
  • 解决量化模型中的 NaN 问题:为何非量化层应选用 FP32?(41)
  • 波浪模型SWAN学习(1)——模型编译与波浪折射模拟(Test of the refraction formulation)