我如何检测一个对象是否在另一个对象之上(如砖块上的马里奥)
How do I detect if an object is on top of another object (like Mario on a brick)
我正在构建一个自动 运行 平台游戏。我有代码,如果角色撞到墙,他们会被推回,直到他们能够越过墙。不幸的是,这意味着当角色试图跳到一个物体上时,他只会被推回去。我如何辨别角色何时位于对象顶部,何时位于对象侧面?
我当前的算法(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# }
这里四个条件太多了。根据角色和墙壁的高度,第一个和第二个条件消除了您的角色实际上在墙上的情况。
假设如果角色的中心底部在墙的顶部,您认为角色在墙的顶部,您可以执行以下操作:
character.Center = character.Left + character.Width / 2;
if (character.Center > wall.Left &&
character.Center < wall.Left + wall.Width &&
character.Top - character.Height > wall.Top) { ... }
我正在构建一个自动 运行 平台游戏。我有代码,如果角色撞到墙,他们会被推回,直到他们能够越过墙。不幸的是,这意味着当角色试图跳到一个物体上时,他只会被推回去。我如何辨别角色何时位于对象顶部,何时位于对象侧面?
我当前的算法(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# }
这里四个条件太多了。根据角色和墙壁的高度,第一个和第二个条件消除了您的角色实际上在墙上的情况。
假设如果角色的中心底部在墙的顶部,您认为角色在墙的顶部,您可以执行以下操作:
character.Center = character.Left + character.Width / 2;
if (character.Center > wall.Left &&
character.Center < wall.Left + wall.Width &&
character.Top - character.Height > wall.Top) { ... }