你能用Graphics g绘制Area对象吗?

时间:2014-03-11 03:24:21

标签: java awt collision-detection draw area

我正在尝试在不同对象之间实现碰撞检测系统。我想到了使用Area来进行this question的碰撞检测。

这在我的程序中并没有像在答案中那样工作,我在两个对象碰撞之前会发生碰撞,并且在它们应该停止之前停止。

我不确定哪个区域已关闭,左侧对象的区域位于右侧,或右侧对象的区域位于左侧,或两者兼而有之。

我无法找到一种方法来获取屏幕上的区域,因此我可以看到它们的位置。图形不支持drawArea();或其他任何内容。

我从现有的Geom对象创建了区域:

private Ellipse2D collisionCircle = new Ellipse2D.Double(0,0,0,0);
private Area collisionArea;

// later inside the update() method
collisionCircle.setFrame(posX - 61, posY - 61, 122, 122);
collisionArea = new Area(collisionCircle);

我对另一个对象使用相同的技术:

private Rectangle collisionRect = new Rectangle(0,0,0,0);
private Area collisionArea;

// later in the update() method
collisionRect.setRect(posX - 61, posY - 61, 122, 122);
collisionArea = new Area(collisionRect);

在主游戏部分,我使用了与前面提到的问题相同的碰撞方法。

结果

制作区域的对象(矩形和椭圆)都以1像素边框绘制到屏幕上,并且可以清晰地看到。它们开始在它们应该之前发生碰撞(按照这种方法),并在它们应该仍然发生碰撞时停止。

我希望能够直观地表示Area对象,而不是几何对象,所以我可以解决这个问题。可以这样做吗?

1 个答案:

答案 0 :(得分:3)

Area实施ShapeGraphics2D可以绘制并填充Shape,所以是的,您可以绘制Area

example