使用子动画实例
开始为角色创建更为复杂的动画蓝图后,有时您可能希望在一个动画蓝图中重新使用另一个动画蓝图的部分。 可将节点网络拆分为其自身的动画蓝图,并使用 子动画实例 在需要时访问动画蓝图,无需重新创建节点网络。
在此指南中,我们创建一个带逻辑的动画蓝图对可操作角色产生影响,然后使用模板动画蓝图中的子动画实例调用该逻辑。
此指南使用启用 Starter Content 的 Blueprint Third Person 模板。
步骤
使用 UE4_Mannequin_Skeleton 新建一个 动画蓝图,将其命名为 AltAnimBP。此动画蓝图将用作子动画实例,将从模板 ThirdPerson_AnimBP 动画蓝图中进行调用。
在 AltAnimBP 的 AnimGraph 中,点击右键 并添加一个 Sub-Graph Input 节点。此操作将在子动画实例中创建一个 In Pose,以便通过外部动作数据传递到此动画蓝图。
再次 点击右键 并添加一个 FABRIK 骨架控制节点。在此例中,我们使用 IK 让角色在游戏中奔跑时手臂在空中挥舞。
在 Details 面板中将以下设置指定到 FABRIK 节点。
取消勾选 (As Pin) Effector Transform
将 Location 设为 100, 0, 200。
将 Tip Bone 设为 index_01_l。
将 Root Bone 设为 clavicale_l。
复制图表中的 FABRIK 节点,然后在 Details 面板中执行以下修改。
将 Location 设为 -100, 0, 200。
将 Tip Bone 设为 index_01_r。
将 Root Bone 设为 clavicale_r。
在 FABRIK 节点的 Alpha 引脚上 点击右键 并对名为 Effect Alpha 的变量执行 Promote to Variable 操作。
重新创建下图所示的节点网络(Local to Component 和 Component to Local 节点将被自动创建)。编译 动画蓝图后,预览窗口中的角色将会把手臂抬起。
在 Content Browser 的 Content/Mannequin/Animations 文件夹下打开 ThirdPerson_AnimBP。
在 AnimGraph 中 点击右键 并添加 Sub Anim Instance 节点。此节点用于访问创建的动画蓝图。
在 Sub Anim Instance 节点的 Details 面板中,将 Instance Class 设为 AltAnimBP。
点击 EffectAlpha 旁的 Expose 复选框公开属性。公开属性后,即可从父动画蓝图更新那些带数据的属性。
在 MyBlueprint 面板中拖入 Speed 变量并除以 600,然后将其插入 Effect Alpha。在这里我们用角色的移动速度除以一个值,在应用的骨架控制量之间形成混合。
编译 并 在编辑器中开始游戏。
最终结果
如以下视频所示,随着角色速度的增加,会将其除以一个特定的量,然后再用于驱动子动画实例网络中应用的骨架控制量。 在此例中,我们使用 Sub-Graph 输出节点确定最后的动作数据。然而,您也可创建自带状态机和逻辑的动画蓝图,生成最后的动作数据。
如以下视频所示,我们创建了一个自带状态机的单独动画蓝图来定义不同动画状态,角色可基于布尔值在这些状态之间切换。