Java 碰撞检测的替代方案?
我需要检查区域Java 碰撞检测的替代方案?,java,graphics,collision-detection,2d-games,Java,Graphics,Collision Detection,2d Games,我需要检查区域a和区域b之间的冲突: Area a = new Area(new Ellipse2D.Float(100, 100, 70, 70)); Area b = new Area(new Polygon(x,y,n)); 其中x和y是存储多边形坐标的数组。我试过: boolean checkCollision() { a.intersect(b); return !a.isEmpty(); } 最后,我编写了这个方法,看看它是否有效: public String t
a
和区域b
之间的冲突:
Area a = new Area(new Ellipse2D.Float(100, 100, 70, 70));
Area b = new Area(new Polygon(x,y,n));
其中x
和y
是存储多边形坐标的数组。我试过:
boolean checkCollision()
{
a.intersect(b);
return !a.isEmpty();
}
最后,我编写了这个方法,看看它是否有效:
public String toString()
{
if(checkCollision())
return "TOUCH";
else
return "NO TOUCH";
}
这种方法似乎不起作用:当我触摸多边形的顶点时,它不会检测到碰撞
在第三张图片中,您可以看到,只有当我距离它们不碰撞的区域“足够远”(这些图片中的多边形是白色的)时,才可以看到。相反,如果它们在附近,碰撞不是很精确,它似乎不起作用
这种方法正确吗?有什么建议吗?备选方案?请发布复制此方案所需的实际代码。我认为这就足够了。。在这之后,我画它,我移动球,但这在碰撞中并不重要。。无论你想要更多,我都会添加更多。这不是有效的代码。我们无法检查问题是否在您实现它的方式中(我的第一个猜测),或者碰撞检测中是否存在实际问题。如果我错了,请纠正我。但是从第一次研究来看,您的intersects调用没有任何意义:给定,intersects仅使用
Rectangle2D
作为单个参数定义。这些图片让我感到困惑。在图2中,球完全在黑色区域上并且相交,而在图3中,球也完全在黑色区域上并且不相交。图片3中的屏幕截图下方是否有边框,或者您希望用每张图片描述什么场景?