2016-03-28 2 views
0

オブジェクトがブロックを飛び越えると、オブジェクトがブロックの上を飛び越えて、壁の側面に数秒間くっつき、オブジェクトがわずかに下がり、再び床に当たるまでスティックします。この間、ユーザーは再びジャンプして壁をバイパスできます。 これを解決する方法についてのご意見はありますか?ゲームメーカースタジオ - オブジェクトが垂直方向に滑ってしまうのを防ぐ

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

現在のロジックがどのように実装されているかを表示できますか? – enkryptor

答えて

0

ジャンプ/移動コードが表示された方が簡単になります。 一般に、フリーズは無限のwhileループによって引き起こされます。リミッタを追加してみてください。

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

また、なぜあなたはルームに衝突していますか?部屋とは?

関連する問題