我正在编写一个简单的游戏,或者看起来是这样。我创建了一个绘制 Arc2D
(半圆形)的类,该类将在鼠标移动时重新绘制拱门。
然后我创建了一个绘制椭圆的新类。本类(class)有一些简单的数学来移动屏幕上的椭圆形。椭圆形的运动并不是很重要。现在已经完成了,我想检测椭圆是否在任何点与圆弧(半圆,仅圆弧线
)碰撞。
我尝试的是将椭圆形变成矩形并使用相交方法。此代码位于圆弧的绘制方法中。
Arc2D temp= new Arc2D.Double(200, 200, 100, 100, angle, 180, Arc2D.OPEN);
MasterOval m = new MasterOval();
Rectangle r1 = m.bounds();//This gets the bounds of the oval
if(r1.intersects(temp.getBounds()))
System.out.println("hit");//display if intersects
出于某种原因,我无法弄清楚为什么它在与弧碰撞时不会显示“hit”一词。有没有办法查看它们是否相交?由于隐私政策,这是我可以提供的所有代码。请帮忙。
最佳答案
好吧,我不确定您的 MasterOval
类是否实现了 Shape
接口(interface),但如果实现了(如果没有,请考虑使用 Ellipse2D.Double
或类似的东西),检查 Shape
实例之间碰撞的最简单方法(也许是标准?)是使用 Area
:
Shape1 shape1 = new Arc2D.Double(...);
Shape2 shape2 = new Ellipse2D.Double(...);
Area area1 = new Area(shape1);
Area area2 = new Area(shape2);
if (area1.intersect(area2)) {
...
}
关于java - 椭圆形和圆弧之间的碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449603/