JavaFX中与.intersects()的2D碰撞 - 准确性差

时间:2014-03-28 20:22:44

标签: java javafx 2d collision-detection

我有几个Shape对象 - CircleRectanglePolygon

我使用内置的.intersects(Bounds1, Bounds2)方法来检测碰撞但是它非常不准确。

为什么碰撞精度如此糟糕?如何改进?多边形对象的碰撞检测真的很糟糕。它实际上至少有50个像素。

编辑:这是我的代码:

for (int i = 0; i < shapes.size(); i++) {
    Bounds b1 = shapes.get(i).getBoundsInParent();                          
    Bounds b2 = shapes.get(i).getBoundsInParent();

if (b1.intersects(b2)) {
     //intersection happened and I remove the shapes from the scene
  }
}

这是代表ArrayList Polygon的{​​{1}}代码。

Shapes

1 个答案:

答案 0 :(得分:0)

根据您发布的内容,您要设置Circle的半径,然后设置Rectangle的宽度和高度。但是您没有指定位置。也许这是你的问题?

尝试使用带有xy坐标的构造函数,看看是否可以改善碰撞检测。

所以喜欢

Circle c1 = new Circle(10,10,20); // center at (10,10), radius of 20
Rectangle r1 = new Rectangle(10,10,20,20); // upper left corner at (10,10), height and width of 20