我想让玩家改变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
(首先删除对象属性中的设置)
我尝试将一个重力函数设置在一个创建元素中,以设置标准重力。
出于某种原因,我在最后两个案例中向上浮动。
答案 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 -= 90
和gravity
变量将无效。您需要使用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);
变量。