Language:
Page Info
Tags:
Skill Level:
Engine Version:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

在运行时设置动态对象的动画

针对游戏性目的创建动画时,有时需要对通过 Sequencer 在运行时动态生成的对象设置动画。 举例而言,用户可创建一个带动画的对象沿路径移动,而该对象可由玩家定义。 在 蓝图可视化脚本 的协助下,用户可使用 Get Sequence Bindings 节点从关卡序列公开绑定辨识符,并使用自有绑定覆盖这些绑定。

在此例中,我们将为一个对象设置动画,使其沿路径行进;按键后可变更此对象。详情见下方视频。

在此指南中,我们使用的是启用 Starter ContentBlueprint Third Person Template 项目,Target HardwareProject Settings 为默认设置。

步骤

  1. Content Browser 中以 Actor 类为基础新建两个 蓝图 ,将一个命名为 Cube_Blueprint,另一个命名为 Sphere_Blueprint

    DynamicAnim_01.png

    默认序列中使用的是立方体蓝图,而玩家按键后将切换为球体蓝图。

  2. 在每个蓝图中添加一个 Static Mesh 组件,一个使用 Shape_Cube 模型,另一个使用 Shape_Sphere 模型。

    DynamicAnim_02.png

  3. Modes 面板中将一个 Empty Actor 拖入关卡视口中。

    DynamicAnim_03.png

  4. 主工具栏 中点击 CinematicsAdd Level Sequence 按钮,然后为其指定任意命名。

    DynamicAnim_04.png

  5. 在序列中,在关卡中选中 Empty Actor 后,先点击 Add,然后点击 Add Actor 将其添加到序列。

    DynamicAnim_05.png

  6. Empty Actor 添加一个 Transform 轨迹,在 0 处添加一个键,设为关卡中的初始位置。

    DynamicAnim_06.png

  7. 将时间轴移至第 50 帧,然后在关卡中移动 Empty Actor,然后在其新位置按下 S 新建一个键。

    DynamicAnim_07.png

  8. 将时间轴移至第 100 帧,然后将 Empty Actor 移回至其初始位置,然后按下 S 在其最终变形处添加一个键。

    DynamicAnim_08.png

    也可在 Sequencer 中的第 100 帧处按下 ],在此键处终止序列。

  9. 在关卡视口中选中关卡序列,然后在 Details 面板中将 Loop 设为 Loop Indefinitely

    DynamicAnim_09.png

  10. 在关卡视口中选中关卡序列后,在 主工具栏 中选择 BlueprintsOpen Level Blueprint

    DynamicAnim_10.png

  11. 在图表中 点击右键,创建一个对关卡序列的引用。

    DynamicAnim_10b.png

    在此例中我们将关卡序列命名为 Master,您可以使用其他命名。

  12. 点击右键 添加一个 Event Begin Play 节点,然后从关卡序列引用连出引线,添加一个 Play (Sequence Player) 节点。

    DynamicAnim_11.png

    然后按下图所示连接节点。

    DynamicAnim_12.png

    此设置将在游戏开始时播放序列。

  13. 在图表中 点击右键,添加一个 1 键盘事件并将其连接到一个 Flip Flop 节点。

    DynamicAnim_13.png

    第一次按下 1 时,空白 Actor 将变为立方体;再次按下 1 时,立方体将变为球体。

  14. 点击右键 并创建一个 Spawn Actor From Class 节点,然后将类设为 Cube Blueprint

  15. 右键点击 Return Value,然后 Promote to Variable 调用 Cube,然后从 Spawn Transform 连出引线并使用 Make Transform

    DynamicAnim_14.png

    在此处按下 1 时将生成立方体蓝图,将其保存为调用立方体的变量,然后为其赋予一个生成的默认变形。

  16. Flip FlopB 引脚连出引线,使用 Spawn Actor from Class(设为 Sphere Blueprint),创建一个变量进行保存,并以下图中的方式进行连接。

    DynamicAnim_15.png

    第二次按下 1 时,便会在球体蓝图中进行创建和生成,并将其保存为变量以便之后使用。

  17. 在图表中 点击右键 并添加 Get Sequence Bindings 节点,然后在 Details 面板中将其指向关卡序列。

    DynamicAnim_16.png

    此设置将使用户能够通过蓝图脚本访问并覆盖关卡序列中包含的内容。

  18. 在图表中 点击右键 并添加 Add Binding 节点,然后连接到以下节点:

    DynamicAnim_17.png

    上图中我们已将对关卡序列的引用连接为 TargetGet Sequence Bindings 节点连接为 Binding,而为生成立方体创建的变量连接为 Actor。 此设置使用户能用指定的 Actor(生成的 立方体球体)替换关卡序列中的空白 Actor(Actor)。应用到空白 Actor 的动画也将被应用到设为绑定部分的 Actor。

  19. 针对脚本的 Sphere 部分执行之前的步骤,用 Sphere 替代 Cube 作为 Actor

    DynamicAnim_18.png

  20. 跟随脚本 Cube 部分的 Add Binding 节点,使用 Sphere 变量并执行一个 ?IsValid 检查,如有效则执行 Destroy Actor

    DynamicAnim_19.png

    完成此设置后生成立方体时便会销毁球体。

  21. 针对脚本的 Sphere 部分执行之前的步骤,使用 Cube 变量上的 ?IsValid 检查,如有效则执行 Destroy Actor

    DynamicAnim_20.png

    完成此设置后生成球体时便会销毁立方体。

  22. 在编辑器中进行游戏,然后按下 1 键在生成的 Actor 之间切换。

最终结果

在编辑器中进行游戏并按下 1 键时,空白 Actor 将被生成的 Actor(立方体或球体)所替代,但继续使用应用的动画。

可使用 Set Binding 节点设置并绑定一个 Actor 阵列到绑定,为一个特定绑定 设置绑定(Set Binding) 或为整个关卡序列 重设绑定(Reset Binding)

AdditionalFunctions.png

Tags