如果您没有使用物理引擎 (您会知道是否使用过),那么您可以使用成对变量gravity
和gravity_direction
.
该gravity
变量控制重力的大小。将其设置为 1 就像将重力设置为 1px/s 2。
通常我使用小于 10 的变量作为gravity
变量。
该gravity_direction
变量控制重力的方向。它的范围从 0 到 360,其中最常用的值是 0(右)、90(上)、180(左)和 270(下)。
如果您希望重力向右(顺时针)改变 90 度,请使用gravity_direction += 90
. 如果您希望重力向左改变 90 度(逆时针/逆时针方向),请使用gravity_direction -= 90
.
只是一个警告,重力是在 End Step Event 之后应用的,所以如果你发现你的角色卡在墙上或有奇怪的碰撞问题,你可能想在 Begin Step 或 Step Event 中实现你自己的重力(我通常使用步骤事件)。
如果您使用的是 Physics Engine,则gravity
andgravity_direction
变量将不起作用。您需要使用physics_world_gravity(x, y)函数。这里,x
控制水平重力,y
控制垂直重力。
所以,如果你想要正常的重力,你会使用physics_world_gravity(0, 32)
,或者你想要的任何值y
。
不幸的是,没有确定当前重力的函数,所以你必须自己做:
global.gravity_x = 0;
global.gravity_y = 32;
physics_world_gravity(global.gravity_x, global.gravity_y);
通常,当我使用这个系统时,我喜欢转换为旧系统,其中有一个 manitude ( gravity
) 和一个方向 ( gravity_direction
)。所以相反,我会这样做:
global.phys_gravity_force = 32;
global.phys_gravity_direction = 270; // Down
global.phys_gravity_x = lengthdir_x(global.phys_gravity_force, global.phys_gravity_direction);
global.phys_gravity_y = lengthdir_y(global.phys_gravity_force, global.phys_gravity_direction);
physics_world_gravity(global.phys_gravity_x, global.phys_gravity_x);
每次您想改变世界的重力时,您都需要使用上面两个示例之一中的所有代码。在我看来,第二个更容易,每次你需要改变的只是global.phys_gravity_direction
变量。