2016-04-25 38 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

非常感谢你;) –

相关问题