Mon*_*o10 14 java 2d intersection shape collision
我想知道判断Shape对象是否与另一个形状相交的最佳方法.目前我在我的游戏中进行了碰撞检测,只要它涉及一个与矩形相交的形状,反之亦然.我遇到的问题是Shape类中的intersects()方法只能将Rectangle或Point作为参数,而不是另一个Shape.有没有一种有效的方法来测试两个Shape对象是否以任何方式重叠?我尝试过的一种方法是使用for循环生成一个点区域来测试它们是否在形状中,然后构建一个Point对象数组以发送到另一个形状进行测试,但这显着降低了我的帧率因为所有不必要的比较.
我在这里寻找并寻找类似的东西,但没有找到任何真正的东西.如果这是重复,请提前抱歉.
use*_*343 19
未经测试,但为什么不:
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();
}
Run Code Online (Sandbox Code Playgroud)
Area实现Shape,但添加了一些可能有用的方法
您还可以使用形状本身的边界,然后比较边界:
public boolean collidesWith(Shape other) {
return shape.getBounds2D().intersects(other.getBounds2D());
}
Run Code Online (Sandbox Code Playgroud)
这对眼睛来说有点好看.