在 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°
此变量仅作为当前面向方向的便捷值显示,为其赋值不会产生任何实际效果。
因此,若要相对于当前方向更改方向,可按以下步骤操作:
- 将 visible_direction 变量赋值给另一个变量 A。
- 向变量 A 添加所需的角度值。
- 使用 ChangeFaceDirection 动作,根据变量 A 更改面向方向。
实用示例
马里奥风格的滑行移动
在 MoveAndJumpSettings 中将移动模式设置为 加速度,并将面向方向设置为 移动键方向,即可实现马里奥风格的移动——角色在面向相反方向时会刹车。
无移动时面向任意摇杆方向
可通过 ChangeAngleSettings 和面向组实现。
步骤:
- 在 GameObject 下添加一个 Node2D 子节点,并重命名为
TargetRoot。 - 在
TargetRoot下再添加一个 Node2D 子节点,并重命名为Target。 - 在
Target节点的检查器中,将其 Transform 位置设置为 x = 100, y = 0。 - 为
Target节点添加任意组名。 - 在 GameObject 下添加 ChangeAngleSettings 子节点。
- 在 ChangeAngleSettings 检查器中,启用 使用右摇杆 或 使用左摇杆,并将
TargetRoot设置为目标节点。 - 在 FaceDirectionSettings 中,设置为跟随分配给
Target节点的组。
工作原理
ChangeAngleSettings 节点根据摇杆输入旋转 TargetRoot 节点。由于 Target 节点相对于 TargetRoot 向右偏移,旋转 TargetRoot 会使 Target 沿圆形路径移动。FaceDirectionSettings 跟随旋转的 Target 节点,从而使对象面向摇杆方向。
面向鼠标光标
首先,创建一个用于鼠标光标的对象。
步骤:
- 使用模板 GDScript_sample 创建一个新的 GameObject,并选择类型 SimpleCursor。
SimpleCursor 是一个带有脚本的节点,可始终跟随鼠标位置。 - 保存 SimpleCursor 并将其放置在游戏场景的 UI 层 中。
(若放置在普通层中,可能会受偏移和其他变换影响。) - 在 FaceDirectionSettings 中,将目标对象设置为跟随 SimpleCursor。
补充说明
您也可以在上一示例(“无移动时面向任意摇杆方向”)中的 ChangeAngleSettings 中启用 使用鼠标,以实现相同效果。