自定义移动

439次阅读
没有评论

共计 2373 个字符,预计需要花费 6 分钟才能阅读完成。

自定义移动

自定义移动行为 并不直接为对象实现任何移动。相反,它提供的功能使得实现自己的“自定义”(基于事件)的移动变得更加容易。

不同的移动方式是如何制作的超出了本手册部分的范围。相反,它将概述自定义移动行为的基本内容及其功能。例如,使用自定义移动行为进行类似 Asteroids 风格的移动,可以打开自定义移动 (‘Asteroids’ 风格) 示例。

对于许多游戏来说,内置的行为如平台和 8 方向已经非常足够。使用自定义移动来重新创建现有的行为应该避免,因为移动很难并且需要花费大量时间才能正确实现。内置的行为已经经过彻底测试,可能具有比你想象的更多的特征(比如平台中的斜坡检测),并且比制作自己的移动要快得多,也更容易使用。

自定义移动的概述

在 Construct 中,大多数移动通过操纵两个值来实现:X 轴上的速度(dx)和 Y 轴上的速度(dy)。这些也被称为其他一些行为中的 VectorX 和 VectorY。例如,如果一个对象以每秒 100 像素的速度向左移动,那么 dx 是 -100,dy 是 0。然后可以通过增加 dx 来加速物体向右移动。这也是 Construct 自带的其他大多数移动行为的内部工作方式(比如平台和 8 方向)。

自定义移动行为为你存储了 dx 和 dy 的值,并提供了帮助你轻松实现必要的数学和算法以进行移动的功能。

每个 tick,自定义移动根据 dx 和 dy 的值调整对象的位置。这称为一步。自定义移动还可以在每个 tick 中使用多个步骤,如果对象移动得非常快,这可以帮助更准确地检测碰撞。每个步骤将根据步进模式属性触发 On step、On horizontal step 或 On vertical step。

自定义移动属性

步进模式

每个 tick 如何进行移动的步骤。如果步数不为 None,则取决于每步像素属性的步数。不同的模式有:

None 简单地根据其速度在每个 tick 对对象进行一次步进。

Linear 将沿直线向目的地位置步进对象,触发 On step。

Horizontal then vertical 将首先在 X 轴上将对象步进到目的地(触发 On horizontal step),然后在 Y 轴上(触发 On vertical step)。

Vertical then horizontal 将首先在 Y 轴上将对象步进到目的地(触发 On vertical step),然后在 X 轴上(触发 On horizontal step)。
每步像素
如果步进模式不是 None,这是每个 tick 朝向目的地位置的每一步的距离(以像素为单位)。默认值为 5,这意味着如果对象在一 tick 中移动 20 像素,它将以四个五像素的步伐移动。
启用
行为初始是否启用或禁用。如果被禁用,可以在运行时使用 Set enabled 操作启用它。
自定义移动条件
比较速度
比较当前移动的速度,单位是每秒像素。水平和垂直分别与 dx 和 dy 速度相比较,而总体则是与向量 (dx, dy) 的大小(整体移动速度)相比较。
是否启用
测试行为当前是否启用。当禁用时,它对对象没有任何影响。
是否移动
如果 dx 或 dy 不为零则为真。反向测试以判断是否停止。
On horizontal step
On vertical step
当步进模式是 Horizontal then vertical 或 Vertical then horizontal 时,针对沿着轴的每一步触发。这可以用于准确检测 Is overlapping 的碰撞。
On step
当步进模式是 Linear 时,针对每一步触发。这可以用于准确检测 Is overlapping 的碰撞。


自定义移动动作

设置启用

启用或禁用行为。如果禁用,行为将不修改对象的位置。

顺时针旋转

逆时针旋转

设置运动角度

调整运动角度。这将为 dx 和 dy 计算新的值,反映相同总体速度的新运动角度。注意:如果总体速度为 0,则设置运动角度无效,因为没有运动。一个常见的错误是先设置运动角度然后设置速度,发现角度没有被使用。相反,只需先设置速度,然后设置运动角度,它将按预期工作。

加速

加速整体移动,或特定轴上的移动。

向角度加速

向位置加速

向角度或位置加速移动。

推出实体

仅在行为当前与具有实体行为的对象重叠时有效。自动移动对象,直到不再与实体重叠。如果对象当前没有与实体重叠,则此操作无效。可以使用以下技术:

  • 相对角度反向(或“回溯”)对象从其当前运动角度,直到不再重叠。
  • 最近将对象沿八方向螺旋向外移动一像素,直到不再重叠。目标是让对象结束在最近的空闲空间,但由于只使用八个方向,因此这是一个近似值。
  • 上、下、左和右沿特定轴移动对象,直到不再重叠。

    在角度推出实体

    仅在行为当前与具有实体行为的对象重叠时有效。从当前位置以给定角度移动对象,直到不再与实体重叠。如果对象当前没有与实体重叠,则此操作无效。

    反转

    通过翻转 dx 和 dy 的符号来反转移动。

    设置速度

    以每秒像素为单位设置当前速度,用于水平或垂直轴,或整体移动速度。设置水平或垂直速度直接分配 dx 和 dy。设置整体速度为 dx 和 dy 计算新值,使它们反映新的总体速度,同时保持相同的运动角度。

    停止

    将 dx 和 dy 都设置为 0 的快捷方式,停止移动。

    停止步进

    仅在“On step”,“On horizontal step”和“On vertical step”中有效。停止当前 tick 的当前步进。对象可以回到其起始位置(在 tick 开始时的位置),或留在其当前位置(可能在起始和结束位置之间中途)。注意,在“Horizontal then vertical”或“Vertical then horizontal”模式下,只有当前轴停止。下一个轴将继续步进,除非你也为那个轴使用 Stop stepping。

    自定义移动表达式

    dx

    dy

    返回移动的 dx 和 dy 值,这是每秒像素的速度在每个轴上。

    MovingAngle

    返回当前运动角度,以度为单位,计算为向量(dx,dy)的角度。

    Speed

    返回当前总体速度,以每秒像素为单位,计算为向量(dx,dy)的大小。

正文完
 0
评论(没有评论)