我们正在尝试制作马里奥游戏。但是,如果我们按住向上键,使用的角色会向上和向上。不像马里奥游戏中它在一定高度后返回。我们刚刚开始学习 Gml。请帮助我们解决这个问题。我们已经上传了我们为跳跃和移动制作的脚本。hsp 和 vsp 变量分别用于水平和垂直速度。grav 用于设置重力。
{
var hsp;
var vsp;
var grav;
var grounded;
hsp = 0;
vsp = 0;
grav = 5;
grounded = 0;
key_right = keyboard_check_direct(vk_right);
key_left = keyboard_check_direct(vk_left);
key_up = keyboard_check_direct(vk_up);
if(key_right)
{
if(hsp < 3)
{
hsp += 5;
}
}
if(key_left)
{
if(hsp > -3)
{
hsp -= 5;
}
}
if(key_up)
{
vsp = -20;
}
vsp += grav;
if(place_meeting(x + hsp, y, obj_wall))
{
while(!place_meeting(x + sign(hsp), y, obj_wall))
{
x += sign(hsp);
}
hsp = 0;
}
x += hsp;
if(place_meeting(x, y + vsp, obj_wall))
{
while(!place_meeting(x, y + sign(vsp), obj_wall))
{
y += sign(vsp);
}
if(sign(vsp) == 1)
{
grounded = 1;
}
vsp = 0;
}
else
grounded = 0;
y += vsp;
}