2D边界框与旋转的碰撞

时间:2013-07-15 22:46:39

标签: java android collision-detection

我目前正在开发一款适用于Android的简单太空游戏。我的碰撞检测将使用矩形和圆形边界框完成。这些边界框需要能够旋转,所以我的问题是:检测旋转矩形和圆形之间碰撞的最佳方法是什么?谢谢你的帮助:)

2 个答案:

答案 0 :(得分:0)

好的,我已经解决了自己的问题!当圆与矩形相交时,只有两种情况:  1.圆心位于矩形内  2.圆与矩形的一边相交 因此,为了检查碰撞,我首先检查圆的中心是否在矩形内,根据矩形的旋转旋转圆的中心,以简化我的计算。如果圆的中心在矩形内,我知道有一个交点,并返回true。 如果第一个检查返回false,那么我检查矩形每边和圆之间的交叉点。如果有一个交叉点我会返回true。如果有人想要代码,请随意发表评论,感谢帮助人员! :)

答案 1 :(得分:-1)

通常,边界框只定义对象的边界(由对象顶点生成的形状& min& min& min& Y) - 这使得计算更简单,边界框不需要旋转,因为我们已经解释过它的目的得到满足。如果要将它们用于碰撞检测,只需检查圆的中心加上其半径是否与两个轴上的矩形相交,如:

public boolean boxintersectscircle(BoundingBox box, BoundingCircle circle) {
    if (box.x > circle.centerx+circle.radius) return false;
    if (box.y > circle.centery+circle.radius) return false;
    if (box.x+box.width < circle.centerx-circle.radius) return false;
    if (box.y+box.height < circle.centery-circle.radius) return false;
    return true;
}

然而,边界框并不准确 - 它们会留下很多未占用的空间,所以如果你担心你的游戏(玩家受挫),我个人会实现分离轴定理或线/圆检测