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

标签 java awt collision-detection draw area

我正在尝试在不同对象之间实现碰撞检测系统。我从 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 像素的边框绘制到屏幕上,并且可以清楚地看到。他们开始碰撞(根据这种方法)比他们应该发生的方式早,并在他们应该仍在碰撞时停止。

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

最佳答案

Area 实现了 ShapeGraphics2D 可以绘制和填充 Shape,所以是的,您可以绘制一个 Area

对于 example

关于java - 你能用 Graphics g 绘制 Area 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315829/

相关文章:

java - 如何在构建时从.class文件中的gradle.properties获取值

java - 如何断言 TestNG java 没有抛出异常

java - 我如何设计一个专业的 JFrame?

java - JTable + JPopupMenu + ActionListener = 噩梦

java - 单击 JOptionPane.showMessageDialog Ok 按钮后如何关闭其他 Swing 窗口

c++ - 在OpenGL中实现边界球碰撞

java - 我怎样才能在java中使图形对象成为实体?

java - 在 Java 中显示数组元素的位置

java - 按字母顺序排列的元音单词

java - 矩形的递归碰撞检测不太有效