改变重力方向

时间:2014-10-28 17:12:48

标签: game-maker

我想让玩家改变gamemaker(免费版)中的重力方向。一旦玩家按下Space,我想向当前的重力方向添加90度。

要检查它是否与我的键绑定相关,我已经分配了一个命令,一旦按下Space键就将某些内容打印到控制台。它似乎工作正常。

我还不是很熟练,而且我试图找到改变引力的教程。要么它们不够清晰,要么只是解释如何设定正常的重力。

  • 我尝试将set variable函数与gravity_direction

  • 一起使用
  • 我也尝试过使用set gravity功能,但这对我来说似乎也不起作用。

  • 我已将重力设置在此位置:rightclick object_player > properties > physics tab > Gravity X: 0.0 | Gravity Y: 30.0

  • 我尝试在包含变量的创建事件中手动设置重力:gravity_direction: 270 gravity: 30 (首先删除对象属性中的设置)

  • 我尝试将一个重力函数设置在一个创建元素中,以设置标准重力。

出于某种原因,我在最后两个案例中向上浮动。

3 个答案:

答案 0 :(得分:0)

Tedisvet! 对我来说这是一个相对简单的问题,所以我会继续回答。

因此,每次按空格键时,都要向重力方向添加90度。您需要做的就是打开您想要重力应用的对象,添加一个空格按下'事件和代码,写

gravity_direction += 90;

希望这有帮助!

答案 1 :(得分:0)

尝试使用:

//如果按下的空格键和世界重力以30米/秒的平方向下拉动,那么改变重力将你拉到左边。

if (keyboard_check_pressed(vk_space) || physics_world_gravity(0, 30)) 
{
   physics_world_gravity(-30, 0);
}


if (keyboard_check_pressed(vk_space) || physics_world_gravity(-30, 0)) 
{
   physics_world_gravity(0, -30);
}


if (keyboard_check_pressed(vk_space) || physics_world_gravity(0, -30)) 
{
   physics_world_gravity(30, 0); 
}


if (keyboard_check_pressed(vk_space) || physics_world_gravity(30, 0)) 
{
   physics_world_gravity(0, 30); 
}

请记住,房间必须启用物理。您也可以更改这些数字以更改重力旋转的方向。这里的那个顺时针工作。 我希望这会有所帮助。

答案 2 :(得分:0)

如果你没有使用物理引擎 (你知道你是不是),那么你可以使用配对变量gravity和{ {1}}。

gravity_direction变量控制重力的大小。将其设置为1就像重力为1px / s 2

我通常使用低于10的变量作为gravity变量。

gravity变量控制重力的方向。范围从0到360,其中使用最多的值为0(右),90(上),180(左)和270(下)。

如果您希望重力向右移动90度(顺时针方向),请使用gravity_direction。如果您希望重力向左移动90度(反/逆时针),请使用gravity_direction += 90

只需提醒一句,重力在结束步骤事件之后应用,因此如果您发现自己的角色卡在墙上或遇到奇怪的碰撞问题,您可能需要实施自己的重力在Begin Step或Step Event中(我通常使用Step Event)。

如果您使用的是物理引擎,那么gravity_direction -= 90gravity变量将无效。您需要使用physics_world_gravity(x, y)功能。在这里,gravity_direction控制水平重力,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); )和方向(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); 变量。