【问题标题】:Can you draw Area objects with Graphics g?你能用 Graphics g 绘制 Area 对象吗?
【发布时间】:2014-04-14 11:32:16
【问题描述】:

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

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

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

我很难找到一种方法来直观地显示屏幕上的区域,以便我可以看到它们的位置。图形不支持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 像素的边框绘制到屏幕上,并且可以清楚地看到。它们在应该发生碰撞之前(根据这种方法)开始碰撞,并在应该仍然碰撞时停止。

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

【问题讨论】:

    标签: java awt collision-detection draw area


    【解决方案1】:

    Area 实现ShapeGraphics2D 可以绘制和填充Shapes,所以是的,你可以绘制Area

    对于example

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 2013-10-17
      • 2019-04-20
      • 2019-08-12
      • 2011-01-23
      相关资源
      最近更新 更多