2012-03-13 106 views

回答

2

如果旋转的对象是一个实现Shape接口的对象,那么它可能会有一个有用的方法实现方法。

+0

该对象是一个图像,所以不幸的是不会工作。 – user1150769 2012-03-13 18:05:41

+0

也许现有的“形状”可以用来近似图像的碰撞边界。 – trashgod 2012-03-13 18:28:49

+1

@ user1150769更快地帮助您更快地编辑您的问题[SSCCE](http://sscce.org/) – mKorbel 2012-03-13 18:44:10

1

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

0

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

最简单的可能是你可以对所有事物使用圆圈并实现圆圈碰撞检测(只是谷歌它)。如果你的图像不是非常圆形的,这可能不会令人满意。否则,如果你有旋转矩形与其他旋转矩形碰撞,那么你将不得不使用Separating Axis Theorem for 2D Rotated Rectangle Collision实现算法。

另一种选择可能是像素完美的碰撞检测,这是Chuck正在谈论。快速搜索出现了这个论坛post。请谨慎行事,但这种方法的性能会随着图像的大小而降低。

1

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

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