1

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

谢谢安迪

4

1 回答 1

1

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

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

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

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

围绕另一个点旋转一个点 (2D)

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

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

创建您自己的矩形对象来解决这个问题,并计算交点等。

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

于 2013-01-22T22:06:48.947 回答