返回 导航

UE5

hangge.com

UE5 - 实现可操作角色教程6(混合空间实现角色蹲下、蹲伏移动功能)

作者:hangge | 2025-10-30 08:53
    在第三人称或第一人称游戏中,“蹲下”(Crouch)是一项常见的移动状态,用于通过低矮通道、潜行或减少角色撞击判定。本教程将基于之前“可操作角色”的基础,演示如何在 UE5 中通过蓝图添加蹲下及蹲伏时的移动功能。

1,准备动画序列

(1)由于之前我们使用的都是“PN_tropicalGroundPlants”这个资源里面模型与动画,里面并不包含我们需要的蹲伏和蹲伏状态下进行移动的动画序列。因此,这里我们需要下载导入“MoCap Online Free Animation Pack”这个角色动画包,具体步骤可以参考我之前写的文章:

(2)在“内容浏览器中”打开“/MCo_Mocap_Basics/Animation/Mobility_Pro/ln_Place”文件夹,将里面的 MOB1_Crouch_Idle_V2_IPC 和 MOB1_CrouchWalk_F_IPC 这两个动画序列复制到我们习惯的文件夹中。比如我这里直接复制到“/PN_tropicalGroundPlants/UE4_ThirdPerson/Mannequin/Animations”下面。

(3)由于这两个动画序列使用的骨架不是我们项目之前所使用的骨架,因此还需要对其进行转换。右键点击序列动画,选择“替换骨架

(4)在弹出的对话框中选择我们使用的骨架,然后点击确认即可。两个动画序列都做同样的操作。

2,创建混合空间

(1)我们需要根据不同的移动速度将蹲伏和蹲伏移动的动画混合成一个新的动画,因此首先我们创建一个“混合空间 1D”,接着在弹出框中选择我们的骨骼,最后将创建的混合空间命名为“ThirdPerson_Crouch_1D
提示:混合空间分为混合空间和混合空间 1D,可以使用两个浮点树或一个浮点数对面板上的动画进行混合。

(2)双击打开“ThirdPerson_Crouch_1D”将“名称”修改为“Speed”,将“最大轴值”修改为“150.0

(3)在“资源浏览器”面板中将动画序列“MOB1_Crouch_Idle_V2_IPC”拖拽到时间轴上的最小值处。

(4)按住 Shift 键将动画序列“MOB1_CrouchWalk_F_IPC”拖拽到最大值处,让动画对齐水平线。

(5)最后我们按住 Ctrl 键并拖拽鼠标或拖拽绿色符号时可以查看动画在不同数值下的混合情况。

3,新增状态切换

(1)打开动画蓝图“ThirdPerson_AnimBP”,双击打开“Default”状态机。

(2)在空白处单击鼠标右键并执行“添加状态”菜单命令,将状态命名为“Crouch

(3)为了能够控制状态切换,我们新增一个布尔类型的变量“isCrouch?

(4)然后添加“Crouch”状态与“Idle/Run”之间两个连接线。
提示:连接线上有一个白色按钮,此按钮代表着条件,当按钮的布尔值返回值为“True”,将会沿着箭头方向进行状态切换。
  • 我们双击“Idle/Run”至“Crouch”的线条按钮,然后添加如下逻辑:
  • 接着双击“Crouch”至“Idle/Run”的线条按钮,然后添加如下逻辑:

(5)最后双击打开“Crouch”状态,其中有“输出动画姿势”节点,代表该状态的输出动画。将“我的蓝图”中的“Speed”变量拖拽到“动画蓝图”面板中,从“资产浏览器”面板中拖拽“ThirdPerson_Crouch_1D”到“动画”面板中,最后将它们连接起来。

4,修改动画蓝图的事件响应逻辑

(1)打开动画蓝图“ThirdPerson_AnimBP”,切换到“事件图表”。可以看到原来的响应逻辑如下,我这里增加了个 Squence 使其看起来更清晰些。
  • 先获取动画蓝图控制的 Pawn 实例,Pawn 实例就是所控制的角色对象。获取成功后,需要判断这个 Pawn 实例是否合法。
  • 如果合法的话,获取角色的移动组件,并且获得下落状态并设置到 IsInAir? 中。
  • 接下来再从 Pawn 实例中获得角色的速度并设置到 Speed 变量中。
提示:动画蓝图中的 UpdateAnimation 事件类似于 Actor 中的 Tick 事件,在动画播放的每一帧中,这个事件都会被触发。

(2)由于 UE5CharacterMovementComponent(角色移动组件)已经自带了蹲下,所有我们在原来基础上再添加一个 Squence 引脚,通过角色移动组件获取蹲下状态并设置 isCrouch?

5,修改角色控制蓝图

(1)打开角色控制蓝图“BP_ControlledCharacter”,将“最大蹲伏行走速度”设置为 150.0

(2)接着事件图表,添加左 Ctrl 键事件节点。因为 UE5 的默认 CharacterMovementComponent(角色移动组件)已经自带了蹲下(Crouch/UnCrouch)功能,我们只需在蓝图中调用即可。

6,运行测试

(1)编译并保存后进入 PIE 运行模式,每次按下键盘左侧 Ctrl 键,可以看到角色便会蹲下。

(2)而按住左侧 Ctrl 键不放的情况下控制角色移动,角色也会采用蹲伏的姿势进行移动。

附:禁止角色蹲下时移动

(1)如果我们想要禁止角色在蹲下状态时移动,可以打开“BP_ControlledCharacter”角色蓝图。找到“InputAxis MoveForward”和“InputAxis MoveRight”事件,添加 Branch 节点判断当前状态。只有不为蹲下状态时,“Add MovementInput”节点才会被执行。

(2)运行游戏,当按下键盘左侧 Ctrl 键让角色蹲下后,就不能再控制角色进行移动了。只有松开键盘左侧 Ctrl 键,角色站立后才可以移动。
评论

全部评论(0)

回到顶部