创建混合空间

混合空间 是可在 AnimGraphs 中取样的特殊资源,允许基于两个输入值混合动画。要基于单个输入简单混合两个动画,可以使用动画蓝图中提供的标准混合节点 之一来执行。混合空间提供了基于多个值对多个动画进行复杂混合的方法(目前限制为两个值)。

本页面将介绍如何选取现有 Character 和应用混合空间,以便基于 Character 移动速度混合步行和慢跑动画。

对于本指南,我们已经使用 Blueprint Third Person 模板创建了新项目,并启用了 默认资源

我们还会使用 Animation Starter Pack,您可通过 市场 免费下载。

AnimationAssetPack.png

下载后,您可以从启动程序,通过 Add To project 按钮将 Animation Starter Pack 添加到您的项目中。

1.打开项目,在 内容浏览器 中的 Game/ThirdPersonBP/Blueprints 文件夹下,打开 ThirdPersonGameMode 蓝图

  1. Default Pawn Class 下,单击下拉菜单,然后选择 Ue4ASP_Character

    BS_DefaultPawnClass.jpg

  2. 编译保存,然后关闭蓝图

  3. 内容浏览器 中单击 Add New 按钮,然后在 Animation 下选择 Blend Space

    BS_BlendSpace.jpg

  4. 选取骨架 窗口中,选择 Game/AnimStaterPack/UE4_Mannequin/Mesh 文件夹中的 UE4_Mannequin_Skeleton

    BlendSpace2.png

    为混合空间命名,如 Walk_Jog_BS

    BS_Walk_Jog_BS.jpg

  5. 打开 Walk_Jog_BS,然后在中心窗口中的 Parameters 部分,按下图所示输入所显示的值。

    BlendSpace4.png

    X Axis Label 设置为 Direction,并将其范围设置为 -180 to 180。将 Y Axis Label 设置为 Speed,并将其范围设置为 150 to 270。设置完这些值后,单击 Apply Parameter Changes 按钮,即可使左侧网格空间根据输入的值进行更新。在此,我们定义的参数将决定混合空间基于 DirectionSpeed 变量(受提供的范围限制)产生的运动,我们将通过玩家 Character 实现该运动。

  6. 资源浏览器 窗口,将 Walk_Fwd_Rifle_Ironsights 动画拖入图表底部的中心位置。

    BlendSpace5.png

  7. 如下所示,将 Walk_Lt_Rifle_Ironsights 动画拖到位置 1,将 Walk_Rt_Rifle_Ironsights 动画拖到位置 2。

    BlendSpace6.png

  8. 如下所示,将 Walk_Bwd_Rifle_Ironsights 动画拖到位置 1 和位置 2。

    BlendSpace7.png

  9. Jog_Fwd_Rifle 动画拖入网格顶部的中心位置。

    BlendSpace8.png

  10. 如下所示,将 Jog_Lt_Rifle 动画拖到位置 1,将 Jog_Rt_Rifle 动画拖到位置 2。

    BlendSpace9.png

  11. 如下所示,将 Jog_Bwd_Rifle 动画拖到位置 1 和位置 2。

    BlendSpace10.png

    如果您在网格内移动鼠标,您将看到 Character 开始混合使用不同的步行/慢跑动画。

  12. 动画资源详细信息 窗口的 “Sample Interpolation” 下,将 Target Weight Interpolation Speed Per Sec 设置为 4.0

    BlendSpace11.png

    此设置将使混合空间中的动画过渡流畅,以防止姿势到姿势间产生跳帧。

  13. 单击 Save,然后关闭混合空间,接着在 内容浏览器 中,打开 Ue4ASP_HeroTPP_AnimBlueprint

  14. 在动画蓝图内,单击 MyBlueprint 选项卡,然后展开 AnimGraph双击 Locomotion

    BlendSpace12.png

    此时将打开用于驱动 Character 动画状态的状态机

  15. 双击 Jog 状态,打开其图表。

    BlendSpace13.png

  16. 单击 Asset Browser 选项卡,然后将 Walk_Jog_BS 拖入图表。

    BlendSpace14.png

  17. 使用 Walk_Jog_BS 混合空间替换 R_Jog,然后连接 DirectionSpeed,并将其插入 Result

    BlendSpace15.png

  18. 单击 CompileSave,然后关闭动画蓝图

  19. 内容浏览器 中打开 Ue4ASP_Character 蓝图

  20. 打开蓝图,找到 Crouching 部分,并用 C 键按键事件替换 InputAction Crouch 节点。

    BlendSpace17.png

    此动画蓝图构建完毕时应有一个名为 Crouch 的**动作映射,由于新项目中不存在该内容,且为了移除黄色警告标志,我们将使用 C** 键按键事件替换它,以便玩家在按下 C 键时蹲伏。

  21. Pressed 针连出线来,添加 FlipFlop 节点,然后按下图所示连接 AB 针。

    BlendSpace18.png

    FlipFlop 节点充当触发器,使 Character 在第一次按下 C 键时蹲伏,然后在第二次按下时站立。

  22. MyBlueprint 内,选中 Show inherited variables 框,然后按住 Ctrl 并将 CharacterMovement 拖入图表。

    BlendSpace19.png

  23. 从图表中的 CharacterMovement 节点连出线来,然后搜索并添加 Set Max Walk Speed 节点,将其设置为 125

  24. 复制 Set Max Walk Speed 节点并将此新节点设置为 150,然后按下图所示连接节点。

    BlendSpace20.png

  25. 在 “Crouch” 部分下方,在图表中 右键单击,然后添加 左 Shift 按键事件。

  26. Pressed 针连出线来并添加 Branch 节点,然后同样添加一个 Released 针的 Branch 节点。

  27. 对于两个节点的 Condition 针,按住 Ctrl 并拖入 Crouch Button Down 变量,然后将其连接到两个 Condition 针。

    BlendSpace21.png

  28. 从 “Crouch” 部分复制 CharacterMovementSet Max Walk Speed 节点。

  29. 按下图所示,从每个 BranchFalse 针连出线来,然后将 Max Walk Speed 的值设置为 270150

    BlendSpace22.png

  30. 蓝图右上角中,单击 Defaults 选项卡。

  31. 在搜索字段中输入 Max Walk Speed,然后将 Max Walk Speed 设置为 150 并将 Max Walk Speed Crouched 设置为 125

    BlendSpace23.png

  32. 单击 CompileSave,然后关闭动画蓝图,接着从场景中删除现有的 ThirdPersonCharacter。

  33. 单击 开始 在编辑器中开始玩游戏。

在编辑器中玩游戏时,使用 WASD 四处移动,默认情况下 Character 将步行,并在改变方向时混合步行动画。如果按下 C 键进行蹲伏,Character 将保持蹲伏姿态,并以稍微慢于站立/步行时的速度步行。处于站立状态时,按住 左 Shift 键并使用 WASD 移动,将会导致 Character 从混合步行/瞄准动画转至混合下蹲/瞄准慢跑动画,从而基本上创造出 Character “冲刺” 的场景。