当我的物体跳过一个块时,如果它不能,它会在墙壁的侧面粘住几秒钟,然后物体稍微下降并再次粘住,直到它撞到地板上。在此期间,用户可以再次跳跃,允许他们绕过任何墙壁。 关于如何解决这个问题的任何想法?
if (place_meeting(x+hsp,y,Room))
{
while (!place_meeting(x+sign(hsp),y,Room))
{
x += sign(hsp);
}
hsp = 0;
}
x += hsp;
//VerticalCollision
if (place_meeting(x,y+vsp,Room))
{
while (!place_meeting(x,y+sign(vsp),Room))
{
y += sign(vsp);
}
vsp = 0;
上面的代码处理游戏中的碰撞,通过实验我现在已经搞砸了。角色会站在墙上,一切都会冻结...... 我使用的是碰撞面罩但是没有帮助。
答案 0 :(得分:0)
如果我们能看到您的跳跃/移动代码会更容易。 通常,冻结是由无限循环引起的,请尝试添加限制器。
if (place_meeting(x+hsp,y,Room))
{
var a = 64;
while (!place_meeting(x+sign(hsp),y,Room) and 64 > 0 )
{
a --;
x += sign(hsp);
}
hsp = 0;
}
另外,你为什么和房间碰撞?什么房间?