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

简介: 本文介绍了在Unity3D中实现角色切换武器功能的动画配置过程,包括创建动画器、设置动画、配置Base Layer、创建武器图层及测试运行,帮助开发者实现多武器切换效果。

4.png

今天,我们就一起来探讨一下,在游戏中角色如何切换武器的功能。由于该功能相对有一点复杂度,所以我将会连载两篇文章进行分享:
(1)首篇文章:如何配置切换武器的动画。
(2)次篇文章:如何编写武器架的代码,实现多武器切换功能。大家可以参考《【Unity3D实例-功能-切换武器】切换武器(二)功能实现》

目录:

1.创建动画器
2.设置动画
3.配置Base Layer图层
4.创建和配置武器图层
5.测试和运行


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

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

一.创建动画器

在 Unity 的“Project”面板中,点击鼠标右键,选中“Create”,点击“Animator Controller”创建动画器,然后把动画器绑定到角色上。
585a0d71-a38a-46bb-b1b2-eb7dcf17a4f6.png

二.设置动画

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

三.配置Base Layer图层

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

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

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

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

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

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

四.创建和配置武器图层

1.点击动画器,选择“Layers”页签,点击页签下的“+”号,添加一个手枪的动画图层(我这里命名为“Pistol Layers”)。接着在图层内点击鼠标右键,选择“Create”,点击“Empty”,创建一个空动画(该空动画的目的是让拔枪动画不是在切换图层时就播放,并且避免循环播放拔枪)。
2.接着把拔枪动画拖拉到动画器上,然后创建过渡线连接“Any State”和“拔枪动画”。点击该过渡线,在右侧栏中设置触发变量为Trigger类型的“grab”变量。最后去掉“Has Exit Time”的勾选,随时可以进行拔枪操作。
2e4373e4c75736946049b7693aea83d9.png

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

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

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

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

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

五.测试与运行

亲测过程:完成的切换武器效果。
0a90351652604d7cae2141340e385e3f.gif

目录
相关文章
|
图形学 Android开发 iOS开发
|
12月前
|
人工智能 API 图形学
《Unity3D NavMeshAgent与Rigidbody移动同步问题的技术拆解》
本文聚焦Unity3D开放世界游戏开发中,NavMeshAgent与物理刚体协同移动的高频异常问题。项目基于Unity 2022.3.12f1 LTS与URP,在PC和PS5端出现斜坡打滑、碰撞障碍物路径死循环、高空坠落路径失效三类异常。通过分层排查,定位根源为组件控制权争夺、路径重算与障碍物移动不同步、NavMeshAgent内部物理冲击保护机制缺陷。进而从动态切换控制权、设计同步机制、修复状态恢复逻辑三方面提出解决方案。
427 0
|
4月前
|
IDE Java 开发工具
【2026最新】Eclipse下载安装使用保姆级教程(附安装包+图文步骤)
Eclipse是免费开源的跨平台IDE,原生支持Java开发,通过插件可扩展至C/C++、Python、Web前端等。其轻量插件架构、丰富生态及二十多年企业级应用积累,使其成为Java开发的重要工具之一。(239字)
|
存储 SQL JSON
MySQL数据类型全解析:如何正确选择字段类型
本文深入解析了MySQL中的各类字段类型选择,包括数值类型、字符串类型、日期时间类型等,通过实际案例对比不同选择的优劣,并提供了字段类型选择的实用指南和最佳实践。内容涵盖类型对比、示例代码、存储优化建议等,帮助开发者在设计数据库时做出高效、合理的类型选择,从而提升数据库性能与数据完整性。
|
C# 图形学
【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器
本文详细讲解了Unity射击游戏中角色拔枪功能的实现方法,包括动态创建武器、设置拔枪动画、角色手部挂载点配置及动画器逻辑搭建,完整呈现拔枪动作的制作流程。
479 0
|
缓存 Rust BI
《排查Bug的逆向思维:6个真实案例教你看透问题本质》
本文分享了6个跨技术栈开发中的真实复杂Bug案例,涉及Python/Django定时任务失效、Go分布式文件存储数据损坏、Vue 3/Vite路由切换状态异常、Flutter iOS列表白屏、.NET Core支付签名验证失败、Rust实时数据服务内存泄漏等场景。每个案例均围绕“隐性Bug”的排查过程展开,从分析异常现象入手,最终定位到技术栈底层特性、环境配置冲突、资源调度疏漏等核心症结,并给出针对性解决方案。文章还提炼出重视异常信号、全局审视系统、回归技术本质等排查原则,为开发者应对跨技术栈复杂问题提供了实战参考。
353 2
|
Java 开发工具
JDK多版本设置并且切换
本文介绍了如何在不卸载旧版本的前提下,配置并切换多个JDK版本。通过统一安装路径、设置环境变量(如JAVA_HOME、JAVA_HOME8、JAVA_HOME17),并调整系统PATH顺序,实现快速切换。最终通过CMD和开发工具验证切换是否生效。
JDK多版本设置并且切换
|
12月前
|
C# 图形学 开发者
【Unity3D实例-功能-切换武器】切换武器(二)功能实现
本文为Unity3D切换武器功能的最终实现教程,介绍如何配置动画并编写武器架代码,实现角色多武器切换功能。内容包含动画设置、Unity准备、代码编写与测试等步骤,适合游戏开发者学习参考。
553 5
|
图形学
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
本文介绍如何在Unity3D中实现角色“上身动画”与“下身动画”的分离控制,使角色在执行拔枪、射击等动作时,下身可独立进行移动动画,提升游戏动画灵活性与玩家体验。内容包含创建动画器、配置动画、设置Avatar Mask等步骤,并附测试效果。后续将讲解IK使用,使角色持枪更自然。
434 9
|
Web App开发 安全 分布式数据库
推荐一款多功能下载工具XDown,支持Torrent/磁力链/百度云等(附下载)
XDown官方版是一款功能强大的下载工具,支持HTTP/HTTPS/HTTP2协议下载,完全免费、无广告,支持128线程,原生支持BT种子和磁力链接,可浏览器自动接管下载,具备断线重连、自定义并发数、代理设置等特性,操作简便,适用于高效下载与做种分享。
4373 0