手册:对象的速度与强制移动区域

关于本手册

本手册讲解 ACTION GAME MAKER 中赋予对象速度的两项功能:可执行动作「设置对象速度(SetObjectVelocity)」,以及地图元素「强制移动区域(ForceArea2D)」。

ACTION GAME MAKER 中速度的概要

对象的移动平时由移动模板或玩家的输入产生。与之相对,这两项功能是在移动之外,给对象附加「由外部赋予的速度」。它们用于被跳台弹起、被传送带运送、被水流冲走、被攻击击飞之类的动作。

两者的速度单位都是每秒的像素数(px/s)。X 为正表示向右,Y 为正表示向下。想要向上弹飞时,请在 Y 中填入负值。

赋予的速度并不只在赋予的那一瞬间有效,对象会持续持有它。消失的时机请参阅后述的「赋予的速度何时消失」。

「设置对象速度(SetObjectVelocity)」

这是从可视化脚本赋予速度的动作,位于「添加其他动作」的「对象控制」分类中。与条件组合后,可以实现按下按钮的瞬间冲刺、受到攻击时被击飞等用法。

目标的指定

  • 移动对象的类型:从「组」「指定的对象」「最后接触的对象」「锁定的对象」中选择。
  • 组:类型为「组」时,选择目标对象组。选择「所有对象」则全员都是目标。
  • 目标对象类型:类型为「指定的对象」时,从「自己」「除自己以外的所有对象」「指定的对象」中选择。
  • 目标对象的路径 / 目标对象范围:目标对象类型为「指定的对象」时,指定目标的对象文件,以及是单体还是全体。

速度的指定

  • X 速度操作 / Y 速度操作:从「不更改」「设置」「叠加」中选择。「设置」会忽略当前速度改为指定的值,「叠加」则是在当前速度上加上指定的值。两者都设为「不更改」时什么都不会发生。
  • 速度:赋予的速度(px/s)。X 和 Y 分别指定。
  • 坐标空间:选择「世界」(初始值)或「本地」。世界使用画面的坐标轴(右为正 X,下为正 Y),本地则会配合执行该动作的对象的旋转而转动坐标轴。大小(缩放)会被忽略。

这个动作在每次进入状态时只执行 1 次。如果需要每帧持续推动的动作,请使用后述强制移动区域的「设置」或「逐渐加速」。

「强制移动区域(ForceArea2D)」

这是放置在地图上、用于操作进入该范围的对象速度的地图元素。不需要搭建可视化脚本,就能做出传送带、水流、跳台、上升气流等。

放置方法

  1. 在地图制作视图中打开地图。
  2. 从「地图图层」停靠面板的添加菜单中选择「强制移动区域」。
  3. 把一并创建的 ForceCollision(128 x 128 的方形)的形状和大小调整为想要产生效果的范围。
  4. 在检查器中设置速度的操作。

会受到效果的对象

受到效果的是由区域的碰撞遮罩检测到的游戏对象本体的墙壁判定。碰到受击判定或攻击判定并不会触发。轻量对象则是在该对象自身进入范围时成为目标。

  • 组:以「所有组」或指定的对象组为目标。
  • 持有该区域的对象自身不会成为目标(即使把强制移动区域放进对象内部使用,自己也不会动)。

速度的操作

  • 坐标空间:选择「本地」(初始值)或「世界」。本地在旋转区域时力的方向也会一起转动,因此可以做出斜向的传送带或斜向吹起的风。世界则与区域的旋转无关,按画面的坐标轴起作用。大小(缩放)会被忽略。
  • X 速度操作 / Y 速度操作:从「不更改」「设置」「进入时叠加」「逐渐加速」中选择(见下表)。
  • 速度:「设置」「进入时叠加」所使用的速度(px/s)。
  • 加速度:「逐渐加速」所使用的加速度(px/s²)。
  • 最高速度:「逐渐加速」时的上限(px/s)。设为 0 则无上限地持续加速。
操作 内容 适合的用途
不更改 不触碰该轴的速度 只想操作其中一个轴时
设置 在范围内期间,每帧都覆盖为该速度 传送带、恒定速度的水流
进入时叠加 进入范围的瞬间只叠加 1 次。出去后再进来会再次叠加 跳台、弹射
逐渐加速 每个物理帧都累加加速度 上升气流、重力区域

可设置的栏位会随所选的操作而切换显示。

离开时的设置

  • 离开时的 X 速度 / 离开时的 Y 速度:选择「保持速度」(初始值)或「停止」。「保持速度」是离开范围后依然持续保有从区域获得的速度。「停止」则是在离开范围的瞬间把该轴的速度归 0。

像跳台或吹飞那样希望离开后仍继续飞出去的,请选择「保持速度」;只想在范围内移动的,请选择「停止」。

赋予的速度何时消失

由外部赋予的速度会被对象持续持有,消失的时机如下。

  • 纵向的速度:着地后消失。在空中期间会保留,并在其上不断累加重力。
  • 横向的速度:在接地且没有被赋予新速度时消失。
  • 离开强制移动区域之后,若离开时的设置为「保持速度」则保留,为「停止」则只有该轴归 0。

因此,被跳台弹起的对象会一直飞到着地为止,而像在冰上滑行那样的动作则会在接地后自然停下。另外,如果在接地期间被赋予了向上的速度,在离开地面之前的数帧内,纵向速度会受到保护而不会被清除。

如何区分使用

想制作的东西 使用的功能与设置
传送带 强制移动区域:X 速度操作 = 设置
水流 强制移动区域:想要冲流的轴 = 设置(斜向冲流则用本地坐标旋转区域)
跳台・弹射 强制移动区域:Y 速度操作 = 进入时叠加(Y 填负值)
上升气流・重力区域 强制移动区域:Y 速度操作 = 逐渐加速 + 最高速度
只在范围内移动 强制移动区域:离开时的速度 = 停止
按键冲刺 设置对象速度:X 速度操作 = 设置
受击被击飞 设置对象速度:两个轴 = 设置(或使用「击退自身」动作)
让别的对象移动 设置对象速度:在移动对象的类型中指定组或锁定目标

实用示例

传送带

  • 把强制移动区域放在地板上方,把碰撞调整到与地板等长。
  • 设置坐标空间 = 世界、X 速度操作 = 设置、速度 X = 100。
  • 把离开时的 X 速度设为「停止」,走下传送带的瞬间流动就会停止。设为「保持速度」则走下来之后还会滑行一小段。

跳台

  • 在台子上方薄薄地放一个强制移动区域。
  • 设置 Y 速度操作 = 进入时叠加、速度 Y = -600。
  • 把离开时的 Y 速度设为「保持速度」(设为停止的话,离开范围的瞬间就会掉下去)。

向上吹起的风

  • 把强制移动区域放在风的范围上。
  • 设置 Y 速度操作 = 逐渐加速、加速度 Y = -400、最高速度 Y = 200。
  • 加速度胜过重力后就会被向上运送,并在最高速度处到顶。离开范围后会因重力开始下落。

按键冲刺

  • 在玩家的可视化脚本中,创建冲刺键的输入条件。
  • 放置「设置对象速度」,把移动对象的类型设为「指定的对象」、目标对象类型设为「自己」。
  • 设置坐标空间 = 世界、X 速度操作 = 设置,并在速度 X 中填入冲刺的速度。如果想让符号随朝向变化,可以把向右用和向左用的动作分开,或用查看显示方向的条件来分支。

注意事项

  • 在「设置对象速度」中把坐标空间设为「本地」时,对于左右翻转的对象,上下的符号会反转(面向左侧期间,Y 的负值会变成向下)。想要可靠地指定上下方向时,请使用「世界」。
  • 在「设置对象速度」中把坐标空间设为「本地」时,即使某个轴选择了「不更改」,也会以当前速度回写。只想触碰其中一个轴时,用「世界」的行为更直观。
  • 处于强制移动区域范围内期间,每帧都会被赋予速度,因此即使接地横向速度也不会消失。如果希望在范围内停住,请把速度设为 0,或用离开时的设置来停止。
  • 被举起的对象,在举起动作的「停止移动」有效期间不会接收外部的速度(这是为了避免放下的瞬间因积攒的速度而暴冲)。
  • 强制移动区域不会因受击判定・攻击判定而触发。效果没出来时,请确认区域的碰撞遮罩与目标对象墙壁判定的碰撞层是否匹配。
  • 在「逐渐加速」中把最高速度保持为 0 的话,只要还在范围内就会持续加速。这可能导致穿墙等问题,建议设置上限。