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

【Unity3D实例-功能-切换武器】切换武器(一)动画配置

今天,我们就一起来探讨一下,在游戏中角色如何切换武器的功能。由于该功能相对有一点复杂度,所以我将会连载两篇文章进行分享:

(1)首篇文章:如何配置切换武器的动画。

(2)次篇文章:如何编写武器架的代码,实现多武器切换功能。大家可以参考《【Unity3D实例-功能-切换武器】切换武器(二)功能实现》

目录:

1.创建动画器

2.设置动画

3.配置Base Layer图层

4.创建和配置武器图层

5.测试和运行

--------------------

代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。

原创来源于-谷宇博客:https://www.biguyu.top/home

一.创建动画器

在 Unity 的“Project”面板中,点击鼠标右键,选中“Create”,点击“Animator Controller”创建动画器,然后把动画器绑定到角色上。

二.设置动画

我这里已经准备好了动画,分别有角色普通的跑步动画和站立动画。角色手持手枪的拔枪动画、跑步动画和站立动画。最后是角色手持步枪的拔枪动画、跑步动画和站立动画。我们选中所有的动画,然后点击右侧菜单栏中的“Rig”页签,在“Animation Type”选项中,选择“Humanoid”,然后点击“Apply”应用。

三.配置Base Layer图层

1.第一步双击打开动画器,选中“Base Layer”图层。接着我们点击鼠标右键,在弹出的菜单中,选择“Create Sub-State Machine”,分别创建三个子动画机(我这里分别命名为“Base Movement、Pistol Movement和Rifle Movement”)。

2.第二步我们在左侧栏中,创建四个触发变量,分别为Bool类型的“run”用于触发角色的移动动画、Triggle类型的“grab”用于触发角色的拔枪动画、Triggle类型的“pistolMove”用于切换成pistol相对应的动画组(包括手持手枪的站立动画和移动动画)、Triggle类型的“rifleMove”用于切换成rifle相对应的动画组(包括手持步枪的站立动画和移动动画)。

3.第三步点击选中“Any State”和“Pistol Movement”之间的过渡线,设置触发变量为Triggle类型的“pistolMove”。然后再选中“Any State”和“Rifle Movement”之间的过渡线,设置触发变量为“rifleMove”。

4.第四步双击打开子动画机“Base Movement”,接着把角色的普通站立动画和移动动画拖拉到子动画机上。为站立和移动动画创建过渡线,并设置触发变量“Run”(“站立”过渡到“移动”,变量“Run”为true,反之变量“Run”为false)。最后去掉“Has Exit Time”的勾选,因为移动需要实时进行。

5.第五步同理双击打开子动画机“Pistol Movement”,然后把手枪的站立和移动动画拖拉到子动画机中,再创建站立动画和移动动画的过渡线,并选中过渡线,在右侧栏中,设置触发变量“Run”(“站立”->“移动”,变量“Run”为true,反之变量“Run”为false),最后去掉“Has Exit Time”的勾选。

6.第六步同理配置步枪子动画机。如下图:

四.创建和配置武器图层

1.点击动画器,选择“Layers”页签,点击页签下的“+”号,添加一个手枪的动画图层(我这里命名为“Pistol Layers”)。接着在图层内点击鼠标右键,选择“Create”,点击“Empty”,创建一个空动画(该空动画的目的是让拔枪动画不是在切换图层时就播放,并且避免循环播放拔枪)。

2.接着把拔枪动画拖拉到动画器上,然后创建过渡线连接“Any State”和“拔枪动画”。点击该过渡线,在右侧栏中设置触发变量为Trigger类型的“grab”变量。最后去掉“Has Exit Time”的勾选,随时可以进行拔枪操作。

3.最后在“拔枪动画”和“空动画”之间创建一条过渡线,让拔枪后回到“空动画”循环播放,形成闭环。要注意这里的“Has Exit Time”需要勾上,因为需要等待拔枪动画完成后,再过渡。然后点击“Setting”,设置过渡时间为“1”秒,让拔枪动画更平滑过渡到空动画。

4.同理创建步枪的动画图层和配置,如下图:

5.在 Unity 的“Projects”面板中,点击鼠标右键,选择“Create”,点击“Avatar Mask”创建一个遮罩(我这边把Avatar Mask的名称命名为“UpperBody”)。

6.选中创建完成后的Avatar Mask,在右侧的面板中,点击展开“Humanoid”选项,把“人物”中的下身全部点击禁用掉。

7.点击动画器,选中“Layers”页签,点击手枪图层右边的“小齿轮”打开图层设置,把权重Weight设置为0,把遮罩Avatar Mask添加到图层中,表示该图层只对人物上身有效果。再勾选上“IK Pass”,使图层执行OnAnimatorIK方法。(步枪图层设置同理,如下图)

五.测试与运行

亲测过程:完成的切换武器效果。

http://www.xdnf.cn/news/19301.html

相关文章:

  • FPGA CIC抽取滤波器设计
  • HarmonyOS 应用开发:基于API 12及以上的新特性与实践
  • TensorFlow 面试题及详细答案 120道(81-90)-- 其他框架/工具
  • 内核Sched调度关于find_idlest_cpu选核逻辑
  • OpenCV 图像处理实战与命令行参数配置:从轮廓检测到模板匹配
  • AI 重构内容创作:从文案生成到视频剪辑,创作者该如何与 AI 协同共生?
  • 一个投骰子赌大小的游戏
  • H264几个参数说明
  • Maya基础:烘焙动画
  • 网络爬虫是自动从互联网上采集数据的程序
  • VSCode的launch.json配置文件在C++项目调试中的全面应用
  • VB.NET 多次添加字符串数据,再转换成一个数组
  • 设计模式概述:为什么、是什么与如何应用
  • 【开题答辩全过程】以 纳雍县咚咚屋服装租赁管理系统为例,包含答辩的问题和答案
  • Java全栈开发面试实录:从基础到微服务的实战解析
  • 路由控制(二):路由策略和策略路由
  • CICD实战(1) - 使用Arbess+GitPuk+Docker快速实现项目打包构建、docker部署
  • 订餐后台管理系统-day06菜品分类模块
  • C++算法学习专题:前缀和
  • 动规一些理解
  • 【MySQL】练习12-4:启用GTID并配置循环复制
  • YUV格式详解
  • Unity笔记(九)——画线功能Linerenderer、范围检测、射线检测
  • 算法之链表
  • 电科金仓KingbaseES V9数据库:国产数据库的自主创新与行业实践深度解析
  • C#异步编程
  • 深度学习量化双雄:PTQ 与 QAT 的技术剖析与实战
  • 异步编程以及promise的一些拓展
  • 【lua】二进制数据打包和解析
  • Nginx反向代理及配置