我目前正在创建一款Android游戏,并在一段时间内实施了碰撞检测。我只是使用它们的位置,宽度和高度在sprite周围绘制一个Rect,并查看它们是否与其他Rect相交。但是,我的精灵现在根据它们的轨迹旋转,但是我找不到如何旋转Rect以使边界正确。有什么建议吗?
由于 安迪
答案 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)
创建自己的矩形对象以应对此问题,并计算交叉点等。
请注意,我已经谈到了如何旋转矩形的顶点。如果您仍然需要边界框,通常仍然认为它是轴对齐的,因此您可以获取旋转顶点的最大值和最小值并构造一个新的(更大的)矩形。那可能不是你想要的。