Android 旋转精灵的碰撞检测,如何获得正确的边界矩形?

Android 旋转精灵的碰撞检测,如何获得正确的边界矩形?,android,sprite,collision-detection,bounding-box,Android,Sprite,Collision Detection,Bounding Box,我目前正在创建一个android游戏,不久前实现了碰撞检测。我只是用精灵的位置、宽度和高度在精灵周围画一个矩形,看看它们是否与其他矩形相交。但是,我的精灵现在根据其轨迹旋转,但我找不到如何旋转矩形以使边界正确。有什么建议吗 谢谢 AndyRect对象通常是轴对齐的,因此它们只需要4个值:上、左、下、右 如果要旋转矩形,需要将其转换为表示每个顶点坐标的八个值 通过平均所有x值和y值,可以轻松计算中心值 那就是基础数学了。下面是StackOverflow的一些内容: 您的八个值或四个角是(假设从右

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

谢谢
Andy

Rect
对象通常是轴对齐的,因此它们只需要4个值:上、左、下、右

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

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

那就是基础数学了。下面是StackOverflow的一些内容:

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

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


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

Rect
对象通常是轴对齐的,因此它们只需要4个值:顶部、左侧、底部和右侧

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

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

那就是基础数学了。下面是StackOverflow的一些内容:

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

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


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

精灵是否围绕其中心旋转?如果你画旋转的矩形,你怎么不能计算旋转的矩形呢?它们是围绕中心旋转的。如何创建旋转的矩形?我正在使用一个Rect对象,但看不到如何旋转它精灵是否围绕其中心旋转?如果你画旋转的矩形,你怎么不能计算旋转的矩形呢?它们是围绕中心旋转的。如何创建旋转的矩形?我正在使用Rect对象,但看不到如何旋转它如何将其转换为8个值?我是个新手,谢谢你的帮助和耐心。非常感谢。因此,边界仍将是外边界。有没有办法使边界框适合精灵?有没有我目前使用的方法?嗯,要么你误解了我,要么我误解了你。你想要一个旋转的矩形,对吗?我告诉过你如何通过围绕中心旋转顶点来做到这一点。这应该适合精灵,假设“适合”是指旋转以模拟旋转精灵的矩形。我不能将四个顶点放入一个矩形中,让intersect()为我完成所有工作。但是,在阅读本文之后:我不需要Rect对象。很抱歉造成混淆,但感谢helpNice链接。我建议您不要使用Rect,而是创建自己的矩形类,它本质上是一个四边形。那篇文章很好。很好的发现。如何将其转换为8个值?我是个新手,谢谢你的帮助和耐心。非常感谢。因此,边界仍将是外边界。有没有办法使边界框适合精灵?有没有我目前使用的方法?嗯,要么你误解了我,要么我误解了你。你想要一个旋转的矩形,对吗?我告诉过你如何通过围绕中心旋转顶点来做到这一点。这应该适合精灵,假设“适合”是指旋转以模拟旋转精灵的矩形。我不能将四个顶点放入一个矩形中,让intersect()为我完成所有工作。但是,在阅读本文之后:我不需要Rect对象。很抱歉造成混淆,但感谢helpNice链接。我建议您不要使用Rect,而是创建自己的矩形类,它本质上是一个四边形。那篇文章很好。好发现。
v0 : (right, top)
v1 : (left, top)
v2 : (left, bottom)
v3 : (right, bottom)