Ellipse2D对象与Arc2d对象之间的碰撞检测

时间:2015-01-09 20:55:07

标签: java object collision-detection shapes

在开始之前,我已经阅读this帖子,但它似乎并不适合我。我试图检查Arc2d对象和Ellipse2D对象之间的冲突。碰撞有效,但它将对象变成矩形。

public Arc2D a;
public Ellipse2D e;

public void aStuff() {
    a = new Arc2D.Double(((getWidth() / 2) - (250 / 2)), (getHeight() - 135), 250, 265, 0, 180, Arc2D.CHORD);
}

public void eStuff() {
    e = new Ellipse2D.Double((getWidth() / 2), y, 52, 55);
}

public boolean collisionCheck() {
    if (a.getBounds2D().intersects(e.getBounds2d())) { // This is where it turns them into rectangles.
        return true;
    } else {
        return false;
    }
}

在我的计时器中改变" a"的位置。所以它与" e"它将检查布尔返回值并执行某些操作。

y += 5;
if (collisionCheck()) {
    ...
}

但此刻,我无法让检查部分正常工作。我能改变什么?我已经尝试使用形状对象并使用该区域,但它给我一个错误,说它不能从布尔值返回void值。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我发现Area对于进行形状碰撞比使用实际的Shape本身更有用,我建立了一个实用程序,用于将Arcs构建为区域here。如果您有兴趣,可能需要查看此内容和Area

至于你的第二个问题,如果你摆脱了collisionCheck方法中的else {...}块,而只是在if {}块之后立即返回false,这可能会解决你的问题。