2016-03-28 45 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

如果我們能看到您的跳躍/移動代碼,會更容易。 一般來說,凍結是由無限循環造成的,請嘗試添加限制器。

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

另外,你爲什麼碰撞房間?什麼房間?