我想知道判断Shape对象是否与另一个形状相交的最佳方法。目前,我在游戏中已对碰撞检测进行了分类,只要它涉及与矩形相交的Shape,反之亦然。我遇到的问题是Shape类中的intersects()方法只能将Rectangle或Point作为参数,而不能将另一个Shape用作参数。有没有一种有效的方法来测试两个Shape对象是否以任何方式重叠?我尝试的一种方法是使用for循环生成一个点区域以测试点是否在形状中,然后构建一个Point对象数组以发送到另一个形状以进行测试,但是由于所有这些,这大大降低了我的帧速率不必要的比较。
我在这里寻找并寻找相似的东西,但没有真正找到任何东西。抱歉,如果这是重复的话。
未经测试,但为什么不这样做:
import java.awt.geom.Area; ... public static boolean testIntersection(Shape shapeA, Shape shapeB) { Area areaA = new Area(shapeA); areaA.intersect(new Area(shapeB)); return !areaA.isEmpty(); }
Area实现Shape,但添加了一些潜在有用的方法