【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身

今天是"角色拔枪"的第二篇文章,我将会告诉大家,如何实现角色的"上身动画"和"下身动画"分开,也就说上身执行拔枪、射击和换弹等动作,而下身则独立进行移动动画。这种分离式动画控制不仅增强了动画的灵活性,还为玩家带来更好的游戏体验。完整的拔枪功能:

(1)首篇文章:如何实现动态创建武器和角色拔枪的动画,大家可以参考《【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器》。

(2)末篇文章:如何使用IK来让角色持枪的双手更加贴合武器,显得更加平滑而真实,大家可以参考《【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧握武器》

目录:

1.创建动画器

2.配置拔枪动画

3.创建和设置Avatar Mask

4.Avatar Mask挂载到图层

5.测试和运行


一.创建动画器

在 Unity 的"项目"面板中,点击鼠标右键,在弹出的菜单中,接着选中"Create",点击"Animator Controller"创建动画器,然后把动画器拖拉到角色上进行绑定。

二.配置拔枪动画

1.(可选)第一步如果大家是按照我上一篇文章《【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器》来配置拔枪动画的话,点击打开动画器,把拔枪的动画和过渡线删掉,我们重新设置动画。

2.第二步打开动画器,点击选择"Layers"面板。在面板中,点击"+"添加一个新的动画图层,我这里它命名为"Weapon Layer",然后把"RifleIdle"(站立动画)和"GrabRifleFromBehind"(拔枪动画)拖拉到动画器的"Weapon Layer"的动画图层中。

3.第三步我们选中"Weapon Layer"图层,我们点击"Any State"(任何状态下),右键选择"Make Transition"创建过渡线,我们需要把"Any State"的节点与"GrabGun"(拔枪动画)的节点通过过渡线连接起来,然后再把"GrabGun"(拔枪动画)和"Idle"(站立动画)也连接起来。

4.第四步在《【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器》文章中,已经创建好了触发变量"grab",如果没有创建的小伙伴。可以选择动画器中"Parameters"面板,点击"+",添加一个Trigger的触发变量。

5.第五步选中"Any State"(站立动画)与"GrabGun"(拔枪动画)之间的过渡线,然后在右侧面板中,点击"Conditions"列表旁边的"+"按钮,在触发变量下拉框中选择"grab"变量,用于激活拔枪动画。记得取消勾选"Has Exit Time",因为拔枪操作可以根据玩家输入随时触发。

6.第六步选中"GrabGun"(拔枪动画)和"Idle"(站立动画)之间的过渡线,这里需要保持"Has Exit Time"的勾选状态是选中的,因为我们希望在拔枪动画完全播放结束后才进行过渡。接着点击"Settings",将"Transition Duration"的过渡时长设置为1秒,使得拔枪动画结束后,角色能更平滑地切换到Idle站立状态。

三.创建和设置Avatar Mask

1.在 Unity 的"Projects"面板中,点击鼠标右键,在呼出的菜单中选择"Create",点击"Avatar Mask"创建一个头像面具(我这边把Avatar Mask的名称命名为"UpperBody")。

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

四.Avatar Mask挂载到图层

打开动画控制器,选择动画器的"Layers"面板,点击"Weapon Layer"动画面板旁边的"齿轮"按钮,打开Mask设置。接着需要把"Weight"权重调到1。再点击"Mask"选项,选择刚刚我们创建的Avatar Mask。

五.测试与运行

亲测过程:进入 Play Mode 进行测试。当玩家按下拔枪键(我这里设置为"空格"键)触发拔枪动画时,同时按下WSAD角色移动按键,角色上身成功播放拔枪动画,下身仍然保持奔跑的动画。这时角色的手部位置还不能紧贴武器,没关系。在末篇文章《【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧握武器》中,我将会分享给大家IK的使用。

相关推荐
热心市民☆21 小时前
C#基础语法
c#
rainmanqqst21 小时前
C#Netcore支持Https
网络协议·http·https·c#
张人玉1 天前
Prism 框架笔记及实例
c#·wpf·prism
熊猫悟道1 天前
Unity shader 之,Shader内部时间离散处理
unity·游戏引擎·材质·着色器
·心猿意码·1 天前
告别版本地狱:C# 中央包管理
c#
k***45991 天前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
lzhdim1 天前
C#开发的应用启动菜单应用(普通版) - 开源研究系列文章 - 个人小作品
开发语言·c#
MM_MS1 天前
C# 线程与并发编程完全指南:从基础到高级带详细注释版(一篇读懂)
开发语言·机器学习·计算机视觉·c#·简单工厂模式·visual studio
PA_1 天前
unity Component-Based Architecture游戏框架
游戏·unity·游戏引擎
Stark-C1 天前
『真·扩容』将游戏和软件安装到NAS,极空间iSCSI功能初体验
游戏