碰撞后设置物品坐标i 2D平台

时间:2014-04-07 15:13:33

标签: xna 2d

作为主题:

我的finalizing collision detection platformer-style game出现问题。

我使用矩形方法来执行此操作,并collision detection works fine在那里。

问题是:我的游戏应该以哪种顺序查找colisions?因为如果我首先检查玩家是否站在"平台然后在两侧发生碰撞,游戏变得混乱,然后玩家在空中(在跳跃期间)从侧面击中平台。它将玩家传送到"站在"位置,然后忽略侧面碰撞 当我设置游戏首先检查侧面碰撞时,当玩家落在平台上时,他被传送到平台的左侧或右侧。 我确实理解发生了什么,但我不知道如何解决这个问题 如果您希望我发布更多信息/代码,请告诉我 谢谢!

1 个答案:

答案 0 :(得分:0)

在您的情况下,可能在顶部和左侧同时发生碰撞。我目前的想法是确定它从顶部和左侧碰撞的像素数。然后根据这些值,你只改变一个方向。

在这个例子中,让我们说蓝色物体正在下降。它与红色相交,顶部为3 px,左侧为15 px。结果是将对象3 px移动到其他对象上。因为在碰撞的基础上它更多"在顶部"对象而不是" side"它的。

enter image description here

以及如何获取可以使用的重叠值:Rectangle.Intersect(rectangle, rectangle)并将返回这些值。

可能有更好的解决方案,但是现在我想到了什么。