旋转图像上的碰撞检测

时间:2012-03-13 17:16:27

标签: java swing rotation collision

如何在游戏中检测旋转图像上的碰撞?我正在制作一个小行星游戏,我无法弄清楚如何使小行星与旋转的太空船正确碰撞。

4 个答案:

答案 0 :(得分:2)

如果旋转的对象是实现Shape接口的对象,则它可能具有contains()方法的有用实现。

答案 1 :(得分:1)

在paint()中,当您准备绘制动态图像时,请检查目标点的像素颜色并查找目标对象的颜色。当然,运动中的图像和目标物体必须是不同的颜色。

答案 2 :(得分:1)

像素完美的碰撞检测,即。图像之间的碰撞检测,通常很难有效地完成。因此,使用为此目的构建的现有优化库通常是个好主意。

由于您还需要支持旋转图像,因此我建议使用PoxelColl。它支持像素完美的碰撞检测以及缩放和旋转等基本转换。它提供了一个与Java兼容的Scala端口。

答案 3 :(得分:0)

你究竟用于小行星的碰撞边界?

最简单的可能是您可以只使用圆圈来实现所有内容并实施圆圈碰撞检测(只需谷歌)。如果您的图像不是非常像圆形,那么这在视觉上可能并不令人满意。

否则,如果旋转矩形与其他旋转矩形相撞,则必须使用Separating Axis Theorem for 2D Rotated Rectangle Collision实现算法。

另一种选择可能是像素完美碰撞检测,这是Chuck所讨论的内容。快速搜索了这个论坛post。但请谨慎操作,此方法的性能会随着图像的大小而降低。