如何设置人物运动

如何在虚幻引擎 4 中设置带人物动作的人物的操作指南。

Choose your operating system:

Windows

macOS

Linux

本页面的内容

为了创建 Character Movement 需要几个部分,各部分共同产生人物在游戏中四处移动的最终结果。你将需要一个人物、该人物的输入、人物如何响应来自玩家的输入、人物动作的动画、动画间的过渡、动画间过渡背后的逻辑。

在这个"入门"指南中,我们打算向你展示如何在蓝图或C++中从头设置这一切,在本指南的最后,你将拥有表现出不同形式人物动作的可玩人物。

实现指南

本"快速入门"指南将对通过 蓝图 创建完整可玩动画角色所需全部步骤进行讲解。在阅读完本指南后,你将拥有能行走、跑、蹲伏和蹲走、俯卧、以静止站立姿势跳跃,或移动时跳跃的角色。

欲查看成品示例,请点击以下视频样本。

下列步骤中使用的是可在 市场 中免费下载的 动画初学者包,其中内含多个用于创建角色移动的动画。下载该动画包后,可点击启动程序中的 添加至项目 按钮,将其添加到现有项目中(最好为新的空白项目),然后指定要将要添加资源的项目。

AnimationStartePack1.jpg

按照以下步骤开始操作。

1. 角色设置

开始前先创建角色将使用的资源。首先创建 动画蓝图(在稍后的步骤中进行填充),其将用于驱动角色动画,然后创建 角色蓝图,其控制角色行动背后的逻辑及其响应输入的方式。

对于该项目,使用的是 动画初学者包,可从 市场 中免费下载。下载动画初学者包后,可点击启动程序中的 添加至项目 按钮,将其添加到现有项目中,然后指定要添加资源的项目。

对于该项目,使用的是 空白 项目模板,以便使用新项目开始操作。

  1. 打开项目,在 内容浏览器 内 点击右键,然后依次选择 新资源、动画、动画蓝图。

    Characters_1b.png

  2. 在 目标骨架(Target Skeleton) 窗口中选择 UE4_Mannequin_Skeleton 资源。

    Characters_1c.png

  3. 命名 动画蓝图,例如 MyAnimationBlueprint。

  4. 在 内容浏览器 内 点击右键,创建 蓝图类,然后选择 角色 作为类。

  5. 将其命名,如 MyCharacter,然后打开。

  6. 在 组件 窗口中点击 网格体 组件。

    ClickMesh.png

  7. 在 细节 面板中,点击 骨架网格体 旁的 无 框,然后指定 SK_Mannequin_Skeleton 骨架网格体。

    Characters_2a.png

  8. 将 Z 变换 下的 位置 和 旋转 设为 -90,然后指定步骤1中创建的 动画蓝图。

    Characters_3.png

  9. 点击 添加组件 按钮,然后添加 弹簧臂 组件。

  10. 在 细节 面板中,将 Z 的 位置 设为 50,Z 的 插槽偏移 设为 30,然后勾选 使用Pawn控制旋转(Use Pawn Control Rotation)。

    Characters_4.png

    将同时使用 弹簧臂 组件和 相机 创建第三人称视角。

  11. 点击 添加组件 按钮,然后添加 相机 组件。

  12. 在 组件窗口 中,点击 相机 并将其拖动到 弹簧臂 上,使其成为弹簧臂组件的子项。

    MakeCameraChild.png

  13. 在 变换 下的 相机 的 细节 面板中,将 变换 下的 位置 和 旋转 值归零。

    Characters_5.png

  14. 在 组件窗口 中点击 角色移动 组件。

  15. 在 细节 面板中搜索 旋转,并且勾选 角色移动 中如下复选框。

    Characters_6.png

  16. 接下来搜索 行走速度(Walk Speed),然后将 最大行走速度(Max Walk Speed) 设为 200,并将 最大蹲伏行走速度(Max Walk Speed Crouched) 设为 160。

    Characters_7.png

    可将此类值改为所需值,但此值可作为良好起点。

  17. 在 我的蓝图 窗口中点击 创建变量 按钮,创建一个名为 JogPressed 的 布尔 变量。

  18. 再创建四个 布尔 变量:CrouchPressed、PronePressed、JumpPressed 和 DisableMovement。

    Characters_8.png

  19. 编译 并 保存,然后关闭蓝图。

2. 输入和游戏模式

这里我们将设置 输入(游戏功能按钮)来控制角色,并创建将使用角色的 游戏模式。

  1. 在 内容浏览器 内 点击右键,创建 游戏模式 类的新 蓝图类,并将其命名为 MyGame。

  2. 打开 MyGame 蓝图,然后从工具栏点击 类默认(Class Defaults) 按钮。

    SelectClassDefaults.png

  3. 在 类 下的 细节 面板内设置 默认Pawn类,以使用 MyCharacter 蓝图。

    GameMode_1.png

  4. 编译 并 保存,然后关闭蓝图。

  5. 在主编辑器窗口,点击 菜单栏 中的 编辑,然后选择 项目设置。

  6. 在项目设置中点击 引擎 部分下的 输入。

  7. 在 绑定 下添加四个 动作映射 和四个 轴映射。

  8. 对于前两个 轴映射,点击其旁的加号,将额外映射添加到分组。

    Input_1.png

    空白绑定应如上所示。

  9. 按以下方式设置 绑定(务必将 A、S 和 鼠标Y 的 缩放Scale 设为 -1.0)。

    Input_2.png

    现在已设置 动作映射 的 跳跃、蹲伏、慢跑 和 俯卧 的输入;设置 轴映射 的 MoveForward、MoveRight、转向 和 LookUp 的输入。可如图所示进行设置,或自行选择各项的输入。

    欲了解此进程的更多详情,参阅如何在蓝图中设置输入更多信息。

  10. 在项目设置的 项目 部分下点击 贴图和模式(Maps & Modes)。

  11. 在 默认模式 下的贴图和模式(Maps & Modes)中,将 默认GameMode 设为使用 MyGame 游戏模式。

    GameMode_2.png

    欲了解游戏模式的更多详情,参阅设置游戏模式更多信息。

  12. 设置输入和游戏模式设置后,关闭项目设置窗口。

3. 完成角色设置

本节中将实现基于玩家输入控制角色的脚本,以完成角色的设置。

  1. 打开 MyCharacter 蓝图。

  2. 在图表中,右键点击 并添加 InputAxis MoveForward 和 InputAxis MoveRight 事件。

  3. 长按 控制 并拖入 DisableMovement 变量,将其连接到各事件 分支 上的 条件。

  4. 如下所示,设置节点网络的剩余部分。

    点击图像显示完整视图。

    现在角色仅在 DisableMovement 为 False 时才可移动。此设置旨在防止角色在无动画时移动,如拥有Prone Idle动画,但无Prone Crawl动画。为防止玩家俯卧时在地面滑动,建议禁用移动。

  5. 右键点击 并添加 InputAxis Turn 和 InputAxis LookUp 事件。

  6. 将Turn事件添加到 Add Controller Yaw Input 节点,并将LookUp事件添加到 Add Controller Pitch Input 节点。

    Character_MouseInput.png

  7. 在图表中 点击右键 并添加 InputAction Jog 事件。

  8. 在 MyBlueprint 窗口中,点击 显示继承的变量(Show Inherited Variables) 复选框,按住 Control 并将 CharacterMovement 拖入图表。

    Character_JogA.png

  9. 按住 Alt 拖入 Jog Pressed 变量,然后按住 Control 拖入 Crouch Pressed 变量。

  10. 设置节点网络,确保在正确 Set 节点中勾选 慢跑已按(Jog Pressed),如下图所示:

    点击图像显示完整视图。

    当慢跑被 按下 时,将 Jog Pressed 设为 True。然后再 角色移动 组件中,将角色的 最大行走速度 设为 375(可调整此值提高/降低慢跑速度)。

    当慢跑被 松开 时,检查角色是否处于蹲伏状态,如果处于蹲伏状态,将最大行走速度设为 160(蹲伏行走速度)。如角色未处于蹲伏状态,将最大行走速度设为 200(默认行走速度)。利用此设置可让角色从蹲伏或行走状态开始慢跑,并正确进行返回。

  11. 在图表中 点击右键 并添加 InputAction Crouch 事件。

  12. 按住 Alt 拖入 Crouch Pressed 变量,然后按住 Control 拖入 Jog Pressed 和 Prone Pressed 变量。

  13. 设置节点网络,确保在正确 Set 节点中勾选 蹲伏已按(Crouch Pressed),如下图所示:

    点击图像显示完整视图。

    对于蹲伏脚本,首先要检查角色目前是否处于俯卧状态,如果处于此状态,角色将不可蹲伏(因为没有从俯卧到蹲伏的动画,反之亦然。如果你拥有相关动画,可允许玩家从蹲伏进入俯卧状态)。

    将 FlipFlop 节点用作蹲伏的开关,无需长按蹲伏按钮(此为可选项,取决于自身偏好)。首次按下时,将 Crouch Pressed 设为 True,并将 最大行走速度 设为 160。二次按下关闭蹲伏时后,检查角色是否从蹲伏状态进入慢跑(如是,将最大行走速度设为 375),如否,将最大行走速度设回为 200。

  14. 在图表中 点击右键 并添加 InputAction Prone 事件。

  15. 按住 Alt 拖入 Prone Pressed 和 DisableMovement 变量。

  16. 按住 Control 拖入 Crouch Pressed 变量。

  17. 设置节点网络,确保在正确 Set 节点中勾选 Prone Pressed,如下图所示:

    点击图像显示完整视图。

    对于俯卧脚本,首先需检查角色目前是否处于蹲伏状态,如果处于,则角色不可进入俯卧状态(如前所述,因为无过渡动画)。然后再次使用 FlipFlop 节点以在俯卧状态间切换。

    首次按下时将 Prone Pressed 和 DisableMovement 都设为 True,以允许角色进入俯卧状态并禁用角色移动。二次按下时将 Prone Pressed 设为 False 退出俯卧状态,然后添加少许延迟(设为 1.4),之后重新启用移动(防止玩家在播放返回站立动画时移动)。

  18. 在图表中 点击右键,添加 InputAction Jump 事件,并从 MyBlueprint 窗口拖入 CharacterMovement 组件。

  19. 按住 Alt 拖入 Jump Pressed 变量,然后按住 Control 拖入 DisableMovement 和 CrouchPressed 变量。

  20. 设置节点网络,确保在正确 Set 节点中勾选"Jump Pressed",如下图所示:

    点击图像显示完整视图。

    对于跳跃脚本,首先需检查角色是处于俯卧还是蹲伏状态。如果两者都不为 True,则使用 CharacterMovement 组件角色确定当前速度,如速度大于0,表示角色正在移动。

    然后根据角色是否正在移动来设置角色跳跃高度,将 JumpZVelocity 设为 365(对于正在移动的角色)或 340(角色静止时)。这两种情况下,都在跳跃被按下时将 Jump Pressed 设为 True,在跳跃松开时,将**Jump Pressed** 设为 _False_。

4.创建混合空间

创建角色移动的下一步是创建各移动状态(行走、慢跑和蹲走)的 混合空间。混合空间是特殊资源,其可基于两个输入值混合动画。本指南的例子中将基于角色移动速度和方向,混合前/后和左/右移动。

欲了解混合空间的更多信息,查阅混合空间文档。

以下为设置运动混合空间的方法步骤:

  1. 在 内容浏览器 内 点击右键,选择 动画,然后选择 混合空间 来新建资源。

    Blendspace_1.png

  2. 选择 选择骨架(Pick Skeleton) 窗口中的骨架(UE4_Mannequin_Skeleton),然后将该资源命名为 Walk_BS。

  3. 打开 Walk_BS 混合空间,然后将 参数 下的 X轴标签(X Axis Label) 设为 方向,将 Y轴标签(Y Axis Label) 设为 速度。

  4. 将 X轴范围(X Axis Range) 设为 -180 到 180,将 X轴分区(X Axis Divisions) 设为 4。

  5. 将 Y轴标签 设为 速度,将 Y轴范围 设为 0 到 200,将 Y轴分区(Axis Divisions) 设为 4。

  6. 设置X和Y轴值后,点击 应用参数更改(Apply Parameter Changes) 按钮。

    Blendspace_2.png

    点击应用后,将更新 参数 窗口左侧的网格空间以使用输入值,此类值将用于决定移动动画间的混合。

  7. 在 资源浏览器 窗口内搜索 rifle ironsights 动画(角色将使用此类移动动)。

    Blendspace_3.png

  8. 找到 Walk_Fwd_Rifle_Ironsights 动画,然后将其拖放到网格空间的底部中心位置。

    Blendspace_4.png

    此操作将在网格空间上创建参考点。

  9. 将 Walk_Lt_Rifle_Ironsights 和 Walk_Rt_Rifle_Ironsights 动画拖入前走点左/右侧的网格。

    Blendspace_5.png

    Walk_Lt_Rifle_Ironsights (L)、Walk_Fwd_Rifle_Ironsights (F)和 Walk_Rt_Rifle_Ironsights (R)显示在网格上。

  10. 拖入 Walk_Bwd_Rifle_Ironsights 动画,将其放置在左下和右下终点。

  11. 沿网格顶部,从左到右(Bwd、Lt、Fwd、Rt、Bwd)重复与底部相同的布局。

    Blendspace_6.png

    在网格内移动鼠标,可看到角色在方向间行走并混合。

  12. 在 动画资源细节 中的 样本内插(Sample Interpolation) 下,将 每秒目标权重内插速度(Target Weight Interpolation Speed Per Sec) 设为 2.0。

    Blendspace_7.png

    此操作可在切换方向时平滑混合。

  13. 保存,然后关闭 Walk_BS 混合空间窗口。

  14. 在 内容浏览器 中 右键点击 Walk_BS 资源,选择 复制。

  15. 将副本重命名为 Jog_BS 并打开。

  16. 在 参数 下,将 Y轴范围 最大值从200改为 375,然后点击 应用参数修改。

    Blendspace_8.png

    375值指在MyCharacter蓝图中内所设的慢跑速度。

  17. 将更新网格使用最大速度值,但网格上的点仍处在先前位置。

    Blendspace_9.png

  18. 左键点击 并将所有点向上拖至网格顶部的对应位置。

  19. 在 资源窗口 内搜索 慢跑 动画。

  20. 通过将慢跑动画拖到网格的行走点上,用慢跑动画替换网格上的行走动画。

    Blendspace_10.png

    沿网格底部和顶部使用慢跑(Bwd、Lt、Fwd、Rt、Bwd)步枪动画。

  21. 保存 并关闭 Jog_BS 混合空间窗口。

  22. 复制 Jog_BS 并将其重命名为 Crouch_BS,然后再打开。

  23. 在 参数 下,将 Y轴范围 最大值从375改为 160,然后点击 应用参数修改。

  24. 在 资源浏览器 中,搜索 rifle ironsights。

  25. 将网格上的各点替换为各自 Crouch_Walk 动画。

    Blendspace_11.png

  26. 保存 并关闭 Crouch_BS 混合空间窗口。

5. 动画蓝图 - 闲置和行走状态

本章节将设置 动画蓝图(Animation Blueprint),其基于玩家在游戏中采取的行动决定要播放的动画。然后设置 状态机,并创建 闲置(Idle) 和 行走(Walk) 状态,同时设置各状态间的过渡。

欲了解动画蓝图的更多信息,参见动画蓝图文档。

以下为设置动画蓝图的方法步骤:

  1. 找到并打开 MyAnimationBlueprint 资源。

  2. 在 My Blueprint 窗口中创建四个 布尔 变量(IsJumping、IsCrouching、IsJogging 和 IsProne)。

  3. 创建2个 浮点 变量(Speed 和 Direction)。

    AnimBP_1.png

  4. 在 My Blueprint 窗口中,双击 EventGraph 打开 事件图表(Event Graph) 选项卡。

  5. 在 事件图表 上重建以下设置,然后点击 编译 按钮。

    点击图像显示完整视图。

    在上一图表中,要获取玩家角色的方向和速度,并指定到动画蓝图内使用的变量。同时,在 MyCharacter 蓝图(通过从 Try Get Pawn Owner 节点拖出线并 投射 到角色蓝图)中获取响应玩家行动的变量。然后将此类变量传到动画蓝图中的变量,该动画蓝图将决定在动画状态间过渡的时间。

  6. 点击 动画图表 选项卡,在图表中 点击右键,搜索并添加新的 状态机。

    AnimBP_AnimGraph2.png

  7. 命名状态机,然后将其与 Final Animation Pose 节点连接。

    AnimBP_AnimGraph3.png

  8. 双击 状态机打开。

  9. 在 资源浏览器 窗口中搜索 闲置,并将 Idle_Rifle_Hip 资源拖入图表。

    AnimBP_AnimGraph4.png

  10. 将 Entry 节点与 Idle_Rifle_Hip 节点连接,然后点击 编译。

    AnimBP_AnimGraph5.png

    点击编译后,可在预览窗口中看到角色进入闲置姿势。

  11. 在 资源浏览器 中搜索 Walk_BS,并将其拖入图表。

    AnimBP_Walk1.png

  12. 双击 Walk_BS,然后按住 Control 并从 My Blueprint 选项卡将 Speed 和 Direction 变量拖入。

    AnimBP_Walk2.png

    如上所示进行连接。现在便有了带角色值的混合空间。

  13. 关闭 Walk_BS 选项卡,然后在状态机图表上创建从 Idle_Rifle_Hip 到 Walk_BS 的 过渡。

    AnimBP_Walk3.png

  14. 创建从 Walk_BS 到 Idle_Rifle_Hip 的 过渡,然后 双击 从 Idle_Rifle_Hip 到 Walk_BS 的 过渡规则。

    AnimBP_Walk4.png

    过渡规则 决定状态机在动画状态间移动的时间。

  15. 在 过渡规则 中重建以下图表。

    AnimBP_Walk5.png

    在以上脚本中检查,确保玩家角色目前未处于空中(无论下降或起跳),且当前速度大于160。如满足条件,则允许发生从闲置到行走的过渡。

  16. 返回状态机图表,打开从 Walk_BS 到 Idle_Rifle_Hip 的 过渡规则。

  17. 在 过渡规则 中重建以下图表。

    AnimBP_Walk6.png

    现在如角色速度小于160,将允许过渡发生。

  18. 编译 并 保存 动画蓝图。

6. 动画蓝图 - 蹲伏状态

本章节将继续研究 动画蓝图 和聚焦 蹲伏 状态的 状态机。

  1. 在状态机图表上的 MyAnimationBlueprint 中,将 资源浏览器 中的 Crouch_BS 混合空间拖入。

  2. 创建从 Crouch_BS 到 Walk_BS 及从 Walk_BS 回到 Crouch_BS 的 过渡。

    AnimBP_Crouch2.png

  3. 双击 Crouch_BS 并将 Direction 和 Speed 变量拖入,使其连接到混合空间。

    AnimBP_Crouch3.png

  4. 返回状态机图表,打开从 Walk_BS 到 Crouch_BS 的 过渡规则,并重建以下图表。

    AnimBP_Crouch4.png

    现在按下蹲伏且玩家速度大于0时,即可可进入蹲伏行走状态。

  5. 返回状态机图表,打开从 Crouch_BS 到 Walk_BS 的 过渡规则,并重建以下图表。

    AnimBP_Crouch5.png

    以上操作使玩家在未蹲伏且速度大于0时返回行走状态。

  6. 返回状态机图表,将 资源浏览器 中的 Crouch_Idle_Rifle_Hip 动画拖入图表。

    AnimBP_CrouchIdle1.png

  7. 创建从 Crouch_BS 到 Crouch_Idle_Rifle_Hip 及从 Crouch_Idle_Rifle_Hip 回到 Crouch_BS 的 过渡。

  8. 另创建从 Crouch_Idle_Rifle_Hip 到 Idle_Rifle_Hip 及从 Idle_Rifle_Hip 回到 Crouch_Idle_Rifle_Hip 的 过渡。

    AnimBP_CrouchIdle2.png

    现在玩家可从蹲伏行走进入蹲伏闲置(及从蹲伏闲置到蹲伏行走)的过渡。同时设置从蹲伏闲置到站立闲置(及从站立闲置到蹲伏闲置)的过渡。

    如有需要,可在图表上移动节点,以便更好了解过渡。

  9. 打开从 Idle_Rifle_Hip 到 Crouch_Idle_Rifle_Hip 的 过渡规则。

  10. 对于本 过渡,仅要求 IsCrouch 为 True。

    AnimBP_CrouchIdle3.png

  11. 返回状态机图表,打开从 Crouch_Idle_Rifle_Hip 到 Idle_Rifle_Hip 的 过渡规则。

  12. 对于本 过渡,仅要求 IsCrouch 为 False。

    AnimBP_CrouchIdle4.png

  13. 返回状态机图表,打开从 Crouch_BS 到 Crouch_Idle_Rifle_Hip 的 过渡规则。

    AnimBP_CrouchIdle5.png

  14. 在 过渡规则 内重建以下图表。

    AnimBP_CrouchIdle6.png

    如玩家处于蹲伏状态且速度为0,其将进入蹲伏闲置动画。

  15. 返回状态机图表,打开从 Crouch_Idle_Rifle_Hip 到 Crouch_BS 的 过渡规则。

    AnimBP_CrouchIdle7.png

  16. 在 过渡规则 内重建以下图表。

    AnimBP_CrouchIdle8.png

    如玩家按下蹲伏且速度大于0,其将进入蹲伏行走混合空间。

  17. 编译 并 保存 动画蓝图。

7. 动画蓝图 - 慢跑状态

本章节将继续在 动画蓝图 和 状态机 中设置 慢跑 状态及其之间的过渡。

  1. 在状态机图表中,将 资源浏览器 中的 Jog_BS 拖入图表。

    AnimBP_Jog1.png

  2. 打开 Jog_BS 并将 Speed 和 Direction 变量拖入,进行以下连接。

    AnimBP_Jog2.png

  3. 返回状态机图表。

  4. 创建从 Crouch_Idle_Rifle_Hip 到 Jog_BS 及从 Jog_BS 到 Crouch_Idle_Rifle_Hip 的 过渡。

    AnimBP_Jog3.png

  5. 打开从 Crouch_Idle_Rifle_Hip 到 Jog_BS 的 过渡规则,并重建以下图表。

    AnimBP_Jog3b.png

    如慢跑为 True 且玩家速度大于0,其将进入慢跑混合空间。

  6. 返回状态机图表,打开从 Jog_BS 到 Crouch_Idle_Rifle_Hip 的 过渡规则。

  7. 在 过渡规则 内创建以下图表。

    AnimBP_Jog3c.png

    现在玩家可从蹲伏进入慢跑状态(停止慢跑后即返回蹲伏)。

  8. 返回状态机图形,创建从 Crouch_BS 到 Jog_BS 及从 Jog_BS 到 Crouch_BS 的 过渡。

    AnimBP_Jog3d.png

  9. 打开从 Crouch_BS 到 Jog_BS 的 过渡规则 并创建以下图表。

    AnimBP_Jog5.png

    此操作将检查玩家是否已蹲伏并按下 左Shift键(慢跑键);如果是,其将到慢跑状态。

  10. 返回状态机图表,打开从 Jog_BS 到 Crouch_BS 的 过渡规则。

    AnimBP_Jog5b.png

  11. 在 过渡规则 内重建以下图表。

    AnimBP_Jog6.png

    现在检查玩家是否处于慢跑并按下 C 键(蹲伏键);如果是,其将过渡到蹲伏行走状态。

  12. 返回状态机图表,创建从 Jog_BS 到 Idle_Rifle_Hip 的 过渡。

    AnimBP_Jog7.png

  13. 打开从 Jog_BS 到 Idle_Rifle_Hip 的 过渡规则 并创建以下图表。

    AnimBP_Jog8.png

  14. 返回状态机图形,创建从 Jog_BS 到 Walk_BS 及从 Walk_BS 到 Jog_BS 的 过渡。

    AnimBP_Jog9.png

  15. 打开从 Jog_BS 到 Walk_BS 的 过渡规则 并重建以下图表。

    AnimBP_Jog10.png

  16. 返回状态机图表,打开从 Walk_BS 到 Jog_BS 的 过渡规则。

  17. 在 过渡规则 内重建以下图表。

    AnimBP_Jog11.png

  18. 编译 并 保存 动画蓝图。

8. 动画蓝图 - 跳跃状态

接下来配置 状态机 内的 跳跃 状态。现在需要两个跳跃状态:一是玩家原地站立并按下跳跃键时;二是玩家活动时(慢跑、蹲伏行走或行走)的跳跃状态。将使用两个不同动画,一个用于静止时,一个用于活动时。

  1. 在状态机图表中,将 资源浏览器 中的 Jump_From_Jog 动画拖入。

    AnimBP_Jump1.png

  2. 创建在 Jog_BS 和 Jump_From_Jog 间来回 过渡。

  3. 打开从 Jog_BS 到 Jump_From_Jog 的 过渡规则 并创建以下图表。

    AnimBP_Jump2.png

  4. 返回状态机图表,打开从 Jump_From_Jog 到 Jog_BS 的 过渡规则。

  5. 在 过渡规则 图表内,右键点击 并添加 TimeRemaining for 'Jump_From_Jog' 节点。

    AnimBP_Jump3.png

  6. 重建以下图形完成规则。

    AnimBP_Jump4.png

    利用此可查看从慢跑到跳跃动画的剩余时间,如其小于或等于0.1,将允许从跳跃到慢跑混合空间的过渡。此为确保跳跃动画已在过渡其它状态前完成的快捷方式。

  7. 返回状态机图表,创建 Jump_From_Jog 与 Walk_BS 间的来回 过渡。

    AnimBP_Jump5.png

  8. 打开从 Walk_BS 到 Jump_From_Jog 的 过渡规则 并重建以下图表。

    AnimBP_Jump6.png

  9. 返回状态机图表,打开从 Jump_From_Jog 到 Walk_BS 的 过渡规则。

  10. 在 过渡规则 内重建以下图表。

    AnimBP_Jump7.png

  11. 返回状态机图表,将 资源浏览器 中的 Jump_From_Stand 动画拖入。

    AnimBP_JumpStand1.png

  12. 创建 Idle_Rifle_Hip 和 Jump_From_Stand 间的来回 过渡。

  13. 打开从 Idle_Rifle_Hip 到 Jump_From_Stand 的 过渡规则。

    AnimBP_JumpStand2.png

  14. 在 过渡规则 内重建以下图表。

    AnimBP_JumpStand3.png

    现在检查玩家是否已按下跳跃键且未处于蹲伏。

  15. 返回状态机图表,打开从 Jump_From_Stand 到 Idle_Rifle_Hip 的 过渡规则。

  16. 在 过渡规则 内重建以下图表。

    AnimBP_JumpStand4.png

    跳跃动画完成后,将使角色返回闲置。

  17. 编译 并 保存 动画蓝图。

9. 动画蓝图 - 俯卧状态

在最后章节中,将通过添加 俯卧 状态及其之间来回的过渡,完成 状态机。

  1. 在状态机图表中,将 资源浏览器 中的 Stand_To_Prone 动画拖入。

    AnimBP_StandToProne1.png

  2. 创建从 Idle_Rifle_Hip 到 Stand_To_Prone 的 过渡,然后点击 过渡规则。

    AnimBP_StandToProne2.png

  3. 打开从 Idle_Rifle_Hip 到 Stand_To_Prone 的 过渡规则 并重建以下图表。

    AnimBP_StandToProne3.png

  4. 返回状态机图表,将 资源浏览器 中的 Prone_Idle 动画拖入。

    AnimBP_ProneIdle1.png

  5. 创建从 Stand_To_Prone 到 Prone_Idle 的 过渡。

  6. 将 资源浏览器 中的 Prone_To_Stand 动画拖入,并创建从 Prone_Idle 到 Prone_To_Stand 的 过渡。

  7. 创建从 Prone_To_Stand 到 Idle_Rifle_Hip 的 过渡。

  8. 点击从 Stand_To_Prone 到 Prone_Idle 的 过渡规则。

    AnimBP_ProneIdle2.png

  9. 在 过渡规则 的 细节 面板中, 将 BlendSetting 下的 时长(Duration) 设为 0.0。

    AnimBP_StandToProne1b.png

  10. 打开从 Stand_To_Prone 到 Prone_Idle 的 过渡规则。

  11. 在 过渡规则 内重建以下图表。

    AnimBP_ProneIdle3.png

    将检查俯卧是否仍为 True,及进入闲置俯卧状态前,进入俯卧动画是否已结束。

  12. 返回状态机图表,打开从 Prone_Idle 到 Prone_To_Stand 的 过渡规则。

    AnimBP_ProneIdle4.png

  13. 在 过渡规则 内重建以下图表。

    AnimBP_ProneIdle5.png

    如俯卧不再为 true,则开始返回站立姿势的序列。

  14. 点击从 Prone_To_Stand 到 Idle_Rifle_Hip 的 过渡规则。

    AnimBP_ProneToStand1.png

  15. 在 过渡规则 的 细节 面板中, 将 BlendSetting 下的 时长(Duration) 设为 0.0。

    AnimBP_ProneToStand1b.png

  16. 打开从 Prone_To_Stand 到 Idle_Rifle_Hip 的 过渡规则 并创建以下图表。

    AnimBP_ProneToStand2.png

    请务必将 == 节点设为 False(不勾选),表明该 俯卧 不为True。

  17. 全状态机图表应与下图相同(节点的排列可能稍有不同)。

    点击图像显示完整视图。

  18. 编译 并 保存 动画蓝图。

  19. 返回 内容浏览器 和 AnimStarterPack 文件夹,打开 Prone_To_Stand 动画。

  20. 在 动画资源细节 窗口中的 动画 部分下,将 率比例(Rate Scale) 值设为 1.4。

    ProneToStand_Rate.png

    此操作将略微加快动画播放速度,并改善从俯卧到站立时的外观。

  21. 点击 内容浏览器 主工具栏中的 保存 按钮,保存资源和关卡。

  22. 点击 播放 按钮,在编辑器中播放。

现在应已拥有完全动画化的角色,其可以不同方式在关卡内移动。角色应能行走、蹲伏行走、慢跑、跳跃(从静止或移动状态),或从站立/慢跑状态变为到俯卧状态。

还有其他几种可添加到该状态机状态(例如死亡和重新加载),也可将现有动作换为自创动作。现在你应学会了在 蓝图 中设置角色动作、用 动画蓝图 定义动画状态,及通过 混合空间 混合动画的方法。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消