我想知道判断一个 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,但添加了一些可能有用的方法
关于两个 Shape 对象之间的 Java 碰撞检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690846/