2016-04-25 22 views
0

我正在構建一個自動運行的平臺遊戲。我有代碼,如果角色與牆壁碰撞,他們會被推回去,直到他們能夠穿過牆壁。不幸的是,這意味着當角色試圖跳到一個物體上時,他會被推倒。我如何辨別一個角色在一個物體的頂部,從哪個角度來看?如何檢測對象是否位於另一個對象之上(如磚塊上的Mario)

我目前的算法(C-ISH因爲我喜歡C-ISH語法):

if (wall.Top < (character.Top + character.Height) && 
    wall.Left < (character.Left + character.Width) && 
    (wall.Top + wall.Height) > character.Top && 
    (wall.Left + wall.Width) > character.Left) { #code here# } 

回答

1

四個條件太多了這裏。根據角色的高度和牆壁的高度,第1和第2條件消除了角色在牆上的情況。

假設你考慮的字符是在牆的頂部,如果它的底部中間是牆上的頂部,你可以做到以下幾點:

character.Center = character.Left + character.Width/2; 
if (character.Center > wall.Left && 
    character.Center < wall.Left + wall.Width && 
    character.Top - character.Height > wall.Top) { ... } 
+0

非常感謝你;) –

相關問題