使用旋转精灵进行碰撞检测,如何获得正确的边界Rect?

时间:2013-01-22 21:57:46

标签: android sprite collision-detection bounding-box

我目前正在创建一款Android游戏,并在一段时间内实施了碰撞检测。我只是使用它们的位置,宽度和高度在sprite周围绘制一个Rect,并查看它们是否与其他Rect相交。但是,我的精灵现在根据它们的轨迹旋转,但是我找不到如何旋转Rect以使边界正确。有什么建议吗?

由于 安迪

1 个答案:

答案 0 :(得分:1)

Rect个对象通常是轴对齐的,因此它们只需要4个值:top,left,bottom,right。

如果要旋转矩形,则需要将其转换为表示每个顶点坐标的八个值。

您可以通过平均所有x值和y值来轻松计算中心值。

然后它只是基本的数学。这是StackOverflow的内容:

Rotating a point about another point (2D)

您的八个值或四个角(假设从右上角逆时针方向):

v0 : (right, top)
v1 : (left, top)
v2 : (left, bottom)
v3 : (right, bottom)

创建自己的矩形对象以应对此问题,并计算交叉点等。

请注意,我已经谈到了如何旋转矩形的顶点。如果您仍然需要边界框,通常仍然认为它是轴对齐的,因此您可以获取旋转顶点的最大值和最小值并构造一个新的(更大的)矩形。那可能不是你想要的。