【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

目录
相关文章
|
9月前
|
C# 图形学
【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器
本文详细讲解了Unity射击游戏中角色拔枪功能的实现方法,包括动态创建武器、设置拔枪动画、角色手部挂载点配置及动画器逻辑搭建,完整呈现拔枪动作的制作流程。
326 0
|
8月前
|
人工智能 API 图形学
《Unity3D NavMeshAgent与Rigidbody移动同步问题的技术拆解》
本文聚焦Unity3D开放世界游戏开发中,NavMeshAgent与物理刚体协同移动的高频异常问题。项目基于Unity 2022.3.12f1 LTS与URP,在PC和PS5端出现斜坡打滑、碰撞障碍物路径死循环、高空坠落路径失效三类异常。通过分层排查,定位根源为组件控制权争夺、路径重算与障碍物移动不同步、NavMeshAgent内部物理冲击保护机制缺陷。进而从动态切换控制权、设计同步机制、修复状态恢复逻辑三方面提出解决方案。
340 0
|
8月前
|
C# 图形学 开发者
【Unity3D实例-功能-切换武器】切换武器(二)功能实现
本文为Unity3D切换武器功能的最终实现教程,介绍如何配置动画并编写武器架代码,实现角色多武器切换功能。内容包含动画设置、Unity准备、代码编写与测试等步骤,适合游戏开发者学习参考。
313 5
|
9月前
|
图形学
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
本文介绍如何在Unity3D中实现角色“上身动画”与“下身动画”的分离控制,使角色在执行拔枪、射击等动作时,下身可独立进行移动动画,提升游戏动画灵活性与玩家体验。内容包含创建动画器、配置动画、设置Avatar Mask等步骤,并附测试效果。后续将讲解IK使用,使角色持枪更自然。
287 9
|
9月前
|
存储 人工智能 算法
AI 图纸表格识别与智能文档协同处理技术介绍
针对制造业、工程建设等领域图纸表格数据提取效率低、误差高的问题,本文介绍了一套涵盖表格识别、数据导出、EBOM转MBOM及智能文档协同处理的技术方案,实现图纸数据结构化与全生命周期管理。
684 0
|
9月前
|
存储 关系型数据库 MySQL
网站突然崩了,此站点遇到了致命错误!
当WordPress网站出现“此站点遇到了致命错误”时,可通过两种方法快速恢复:一是重装WordPress系统,删除配置文件并清理数据库后重新安装;二是通过FTP备份网站文件,并使用phpMyAdmin导出数据库,确保数据安全并便于迁移或恢复。
395 5
|
9月前
|
设计模式 缓存 Java
Java设计模式(二):观察者模式与装饰器模式
本文深入讲解观察者模式与装饰器模式的核心概念及实现方式,涵盖从基础理论到实战应用的全面内容。观察者模式实现对象间松耦合通信,适用于事件通知机制;装饰器模式通过组合方式动态扩展对象功能,避免子类爆炸。文章通过Java示例展示两者在GUI、IO流、Web中间件等场景的应用,并提供常见陷阱与面试高频问题解析,助你写出灵活、可维护的代码。
|
9月前
|
搜索推荐 算法 Java
基于大数据的旅游可视化及推荐系统
本项目围绕数字化旅游系统的开发与应用展开研究,结合SpringBoot、Layui、MySQL、Java等技术,构建基于协同过滤算法的智能推荐系统。内容涵盖项目背景、研究现状、开发工具及功能结构,旨在提升旅游体验与管理效率,推动旅游业数字化转型。
|
9月前
|
C# 图形学 开发者
【Unity3D实例-功能-下蹲】角色下蹲(三)动画配置
本文详细讲解了在Unity中实现角色下蹲动画的全过程,涵盖动画器创建、动画配置、关键代码实现及测试运行,帮助开发者打造流畅自然的角色交互体验。
208 0