我正在构建一个自动运行的平台游戏。我有代码,以便如果角色与墙碰撞,它们会被推回,直到它们能够越过墙壁。不幸的是,这意味着当角色试图跳过一个物体时,他就会被推倒。如何判断一个角色在一个物体顶部何时位于一侧?
My Current Algorithm(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# }
答案 0 :(得分: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) { ... }