使用子动画实例

开始为角色创建更为复杂的动画蓝图后,有时您可能希望在一个动画蓝图中重新使用另一个动画蓝图的部分。 可将节点网络拆分为其自身的动画蓝图,并使用 子动画实例 在需要时访问动画蓝图,无需重新创建节点网络。

在此指南中,我们创建一个带逻辑的动画蓝图对可操作角色产生影响,然后使用模板动画蓝图中的子动画实例调用该逻辑。

此指南使用启用 Starter ContentBlueprint Third Person 模板。

步骤

  1. 使用 UE4_Mannequin_Skeleton 新建一个 动画蓝图,将其命名为 AltAnimBP。此动画蓝图将用作子动画实例,将从模板 ThirdPerson_AnimBP 动画蓝图中进行调用。

    SubAnimBP01.png

    创建用作另一个动画蓝图中子动画实例的动画蓝图时,所使用的骨架资源必须和合并的动画蓝图中所使用的骨架资源相同。

  2. AltAnimBPAnimGraph 中,点击右键 并添加一个 Sub-Graph Input 节点。此操作将在子动画实例中创建一个 In Pose,以便通过外部动作数据传递到此动画蓝图

    SubAnimBP02.png

  3. 再次 点击右键 并添加一个 FABRIK 骨架控制节点。在此例中,我们使用 IK 让角色在游戏中奔跑时手臂在空中挥舞。

    SubAnimBP03.png

  4. Details 面板中将以下设置指定到 FABRIK 节点。

    • 取消勾选 (As Pin) Effector Transform

    • Location 设为 100, 0, 200

    • Tip Bone 设为 index_01_l

    • Root Bone 设为 clavicale_l

    SubAnimBP04.png

  5. 复制图表中的 FABRIK 节点,然后在 Details 面板中执行以下修改。

    • Location 设为 -100, 0, 200

    • Tip Bone 设为 index_01_r

    • Root Bone 设为 clavicale_r

    SubAnimBP05.png

  6. FABRIK 节点的 Alpha 引脚上 点击右键 并对名为 Effect Alpha 的变量执行 Promote to Variable 操作。

  7. 重新创建下图所示的节点网络(Local to ComponentComponent to Local 节点将被自动创建)。编译 动画蓝图后,预览窗口中的角色将会把手臂抬起。

    SubAnimBP06.png

  8. Content BrowserContent/Mannequin/Animations 文件夹下打开 ThirdPerson_AnimBP

  9. AnimGraph点击右键 并添加 Sub Anim Instance 节点。此节点用于访问创建的动画蓝图

    SubAnimBP07.png

  10. Sub Anim Instance 节点的 Details 面板中,将 Instance Class 设为 AltAnimBP

    SubAnimBP08.png

  11. 点击 EffectAlpha 旁的 Expose 复选框公开属性。公开属性后,即可从父动画蓝图更新那些带数据的属性。

    SubAnimBP09.png

  12. MyBlueprint 面板中拖入 Speed 变量并除以 600,然后将其插入 Effect Alpha。在这里我们用角色的移动速度除以一个值,在应用的骨架控制量之间形成混合。

    SubAnimBP10.png

  13. 编译在编辑器中开始游戏

最终结果

如以下视频所示,随着角色速度的增加,会将其除以一个特定的量,然后再用于驱动子动画实例网络中应用的骨架控制量。 在此例中,我们使用 Sub-Graph 输出节点确定最后的动作数据。然而,您也可创建自带状态机和逻辑的动画蓝图,生成最后的动作数据。

如以下视频所示,我们创建了一个自带状态机的单独动画蓝图来定义不同动画状态,角色可基于布尔值在这些状态之间切换。