手册:DisplayDirection 和 FaceDirection

在 ACTION GAME MAKER 中,每个状态都包含一个名为 DisplayDirection 的系统,该系统会根据对象的方向播放相应的动画。

本手册将介绍如何控制 DisplayDirection

有关支持 DisplayDirection 的动画集的详细信息,请参阅:


DisplayDirection 系统概述

DisplayDirection 可配置为 8 个方向


设置 DisplayDirection

DisplayDirection 可在每个状态下的 “DisplayDirection” 设置中更改。

此外,通过使用通过 FaceDirectionSettings 节点 配置的 FaceDirection,可以实现更精细的控制。


各状态中的“DisplayDirection”设置

DisplayDirection 可设置为以下选项之一:

  • 移动方向:始终与当前移动方向同步。
  • 移动键方向:始终与分配给对象的移动键输入方向同步。
  • 右/左:始终面向右或左。
  • 使用 FaceDirectionSettings:根据 FaceDirectionSettings 节点中配置的 FaceDirection 面向(下文详述)。

当对象保持在同一状态时,所配置的 DisplayDirection 将保持不变。


FaceDirectionSettings 节点(FaceDirection 设置)

此节点用于指定 FaceDirection

它需作为 对象的子节点 放置才能生效。

FaceDirectionSettings 中提供以下设置:

  • 移动方向:始终与当前移动方向同步。
  • 移动键方向:始终与分配给对象的移动键输入方向同步。
  • 不更改(自由):除非通过动作或脚本修改,否则不更改 DisplayDirection。
  • 指定对象的方向:面向指定对象的方向。
  • 指定组:面向指定组中最近的对象的方向。

FaceDirectionSettings 中的每个设置也可通过执行动作 ChangeObjectProperty 进行更改。

虽然 FaceDirection 是与 DisplayDirection 分开的变量,但如前所述,您可以在每个状态的 DisplayDirection 设置中使用 FaceDirection 作为 DisplayDirection


执行动作:ChangeFaceDirection

此动作用于更改 FaceDirection

它不会直接更改 DisplayDirection,仅更改 FaceDirection 本身。

因此,如果状态的 DisplayDirection 设置为 “使用 FaceDirectionSettings”,且 FaceDirectionSettings 未设置为 “不更改(自由)”,则任何手动更改可能会立即被覆盖。请谨慎操作。

ChangeFaceDirection 提供以下选项:

  • 角度:指定 0° 至 360° 的角度,其中右侧为 0°。
  • 方向:直接从 8 个方向中选择。
  • 变量:使用变量值作为度数来指定方向。
  • 移动方向:面向执行时的移动方向。
  • 指定对象:面向指定对象的方向。

DisplayDirection 与 DisplayDirection 变量(visible_direction)

visible_direction 变量以 45 度为增量表示当前面向方向。

示例:

  • 右:0°
  • 右下:45°
  • 下:90°

此变量仅作为当前面向方向的便捷值显示,为其赋值不会产生任何实际效果。

因此,若要相对于当前方向更改方向,可按以下步骤操作:

  1. visible_direction 变量赋值给另一个变量 A。
  2. 向变量 A 添加所需的角度值。
  3. 使用 ChangeFaceDirection 动作,根据变量 A 更改面向方向。

实用示例

马里奥风格的滑行移动

在 MoveAndJumpSettings 中将移动模式设置为 加速度,并将面向方向设置为 移动键方向,即可实现马里奥风格的移动——角色在面向相反方向时会刹车。


无移动时面向任意摇杆方向

可通过 ChangeAngleSettings 和面向组实现。

步骤:

  1. 在 GameObject 下添加一个 Node2D 子节点,并重命名为 TargetRoot
  2. TargetRoot 下再添加一个 Node2D 子节点,并重命名为 Target
  3. Target 节点的检查器中,将其 Transform 位置设置为 x = 100, y = 0
  4. Target 节点添加任意组名。
  5. 在 GameObject 下添加 ChangeAngleSettings 子节点。
  6. 在 ChangeAngleSettings 检查器中,启用 使用右摇杆使用左摇杆,并将 TargetRoot 设置为目标节点。
  7. 在 FaceDirectionSettings 中,设置为跟随分配给 Target 节点的组。

工作原理

ChangeAngleSettings 节点根据摇杆输入旋转 TargetRoot 节点。由于 Target 节点相对于 TargetRoot 向右偏移,旋转 TargetRoot 会使 Target 沿圆形路径移动。FaceDirectionSettings 跟随旋转的 Target 节点,从而使对象面向摇杆方向。


面向鼠标光标

首先,创建一个用于鼠标光标的对象。

步骤:

  1. 使用模板 GDScript_sample 创建一个新的 GameObject,并选择类型 SimpleCursor
    SimpleCursor 是一个带有脚本的节点,可始终跟随鼠标位置。
  2. 保存 SimpleCursor 并将其放置在游戏场景的 UI 层 中。
    (若放置在普通层中,可能会受偏移和其他变换影响。)
  3. 在 FaceDirectionSettings 中,将目标对象设置为跟随 SimpleCursor。

补充说明

您也可以在上一示例(“无移动时面向任意摇杆方向”)中的 ChangeAngleSettings 中启用 使用鼠标,以实现相同效果。