Game Maker Studio - 防止物体垂直滑动

时间:2016-03-28 20:45:37

标签: collision game-maker

当我的物体跳过一个块时,如果它不能,它会在墙壁的侧面粘住几秒钟,然后物体稍微下降并再次粘住,直到它撞到地板上。在此期间,用户可以再次跳跃,允许他们绕过任何墙壁。 关于如何解决这个问题的任何想法?

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;

上面的代码处理游戏中的碰撞,通过实验我现在已经搞砸了。角色会站在墙上,一切都会冻结...... 我使用的是碰撞面罩但是没有帮助。

1 个答案:

答案 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;
}

另外,你为什么和房间碰撞?什么房间?