我目前正在创建一个 android 游戏并在不久前实现了碰撞检测。我只是在精灵周围绘制一个矩形,使用它们的位置、宽度和高度,并查看它们是否与其他矩形相交。但是,我的精灵现在根据它们的轨迹旋转,但我找不到如何旋转 Rect 所以边界是正确的。有什么建议么?
谢谢安迪
我目前正在创建一个 android 游戏并在不久前实现了碰撞检测。我只是在精灵周围绘制一个矩形,使用它们的位置、宽度和高度,并查看它们是否与其他矩形相交。但是,我的精灵现在根据它们的轨迹旋转,但我找不到如何旋转 Rect 所以边界是正确的。有什么建议么?
谢谢安迪
Rect
对象通常是轴对齐的,因此它们只需要 4 个值:top、left、bottom、right。
如果要旋转矩形,则需要将其转换为代表每个顶点坐标的八个值。
您可以通过平均所有 x 和 y 值轻松计算中心值。
然后它只是基本的数学。这是来自 StackOverflow 的内容:
您的八个值或四个角是(假设从右上角逆时针方向):
v0 : (right, top)
v1 : (left, top)
v2 : (left, bottom)
v3 : (right, bottom)
创建您自己的矩形对象来解决这个问题,并计算交点等。
请注意,我已经讨论过如何旋转矩形的顶点。如果您仍然想要一个边界框,这通常仍被认为是轴对齐的,因此您可以获取旋转顶点的最大值和最小值并构造一个新的(更大的)矩形。不过,这可能不是您想要的。