如何设置人物运动

如何在虚幻引擎 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. 点击 播放 按钮,在编辑器中播放。

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

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

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