关于本手册
本手册讲解 ACTION GAME MAKER 中赋予对象速度的两项功能:可执行动作「设置对象速度(SetObjectVelocity)」,以及地图元素「强制移动区域(ForceArea2D)」。
ACTION GAME MAKER 中速度的概要
对象的移动平时由移动模板或玩家的输入产生。与之相对,这两项功能是在移动之外,给对象附加「由外部赋予的速度」。它们用于被跳台弹起、被传送带运送、被水流冲走、被攻击击飞之类的动作。
两者的速度单位都是每秒的像素数(px/s)。X 为正表示向右,Y 为正表示向下。想要向上弹飞时,请在 Y 中填入负值。
赋予的速度并不只在赋予的那一瞬间有效,对象会持续持有它。消失的时机请参阅后述的「赋予的速度何时消失」。
「设置对象速度(SetObjectVelocity)」
这是从可视化脚本赋予速度的动作,位于「添加其他动作」的「对象控制」分类中。与条件组合后,可以实现按下按钮的瞬间冲刺、受到攻击时被击飞等用法。
目标的指定
- 移动对象的类型:从「组」「指定的对象」「最后接触的对象」「锁定的对象」中选择。
- 组:类型为「组」时,选择目标对象组。选择「所有对象」则全员都是目标。
- 目标对象类型:类型为「指定的对象」时,从「自己」「除自己以外的所有对象」「指定的对象」中选择。
- 目标对象的路径 / 目标对象范围:目标对象类型为「指定的对象」时,指定目标的对象文件,以及是单体还是全体。
速度的指定
- X 速度操作 / Y 速度操作:从「不更改」「设置」「叠加」中选择。「设置」会忽略当前速度改为指定的值,「叠加」则是在当前速度上加上指定的值。两者都设为「不更改」时什么都不会发生。
- 速度:赋予的速度(px/s)。X 和 Y 分别指定。
- 坐标空间:选择「世界」(初始值)或「本地」。世界使用画面的坐标轴(右为正 X,下为正 Y),本地则会配合执行该动作的对象的旋转而转动坐标轴。大小(缩放)会被忽略。
这个动作在每次进入状态时只执行 1 次。如果需要每帧持续推动的动作,请使用后述强制移动区域的「设置」或「逐渐加速」。
「强制移动区域(ForceArea2D)」
这是放置在地图上、用于操作进入该范围的对象速度的地图元素。不需要搭建可视化脚本,就能做出传送带、水流、跳台、上升气流等。
放置方法
- 在地图制作视图中打开地图。
- 从「地图图层」停靠面板的添加菜单中选择「强制移动区域」。
- 把一并创建的 ForceCollision(128 x 128 的方形)的形状和大小调整为想要产生效果的范围。
- 在检查器中设置速度的操作。
会受到效果的对象
受到效果的是由区域的碰撞遮罩检测到的游戏对象本体的墙壁判定。碰到受击判定或攻击判定并不会触发。轻量对象则是在该对象自身进入范围时成为目标。
- 组:以「所有组」或指定的对象组为目标。
- 持有该区域的对象自身不会成为目标(即使把强制移动区域放进对象内部使用,自己也不会动)。
速度的操作
- 坐标空间:选择「本地」(初始值)或「世界」。本地在旋转区域时力的方向也会一起转动,因此可以做出斜向的传送带或斜向吹起的风。世界则与区域的旋转无关,按画面的坐标轴起作用。大小(缩放)会被忽略。
- 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 的话,只要还在范围内就会持续加速。这可能导致穿墙等问题,建议设置上限。