我有几个Shape对象 - Circle
,Rectangle
和Polygon
。
我使用内置的.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
答案 0 :(得分:0)
根据您发布的内容,您要设置Circle
的半径,然后设置Rectangle
的宽度和高度。但是您没有指定位置。也许这是你的问题?
尝试使用带有x
和y
坐标的构造函数,看看是否可以改善碰撞检测。
所以喜欢
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