移动和旋转碰撞矩形

时间:2014-05-04 17:30:22

标签: java jpanel rectangles

我正在编写一个简单的游戏,或者看起来似乎具有在鼠标移动时旋转Rectangle的功能。这一开始似乎不是问题,但它只是一个问题。当鼠标在面板上移动时,矩形应该做的是围绕一个点旋转。

enter image description here

如果你看图片,当鼠标移动时Rectangle会旋转。我知道您可以使用Graphics2D的旋转功能。

g2d.rotate(angle, centerx, centery);

这不是很完整,因为我无法获得移动矩形的坐标。这会旋转完整的图形!我怎样才能绘制这个Rectangle以便它能够做到这一点。关于如何开始,我不知道。请帮忙。

1 个答案:

答案 0 :(得分:2)

更多代码和上下文会很好,但基于当前的问题:您可以创建一个转换后的形状。特别是,RectangleRectangle2D实现了Shape接口。您可以创建一个AffineTransform来表示您当前对Graphics所做的轮播。所以代码的相关部分应该大致看起来像

Rectangle2D rectangle = ...
AffineTransform at = AffineTransform.getRotateInstance(
    angle, centerx, centery);
Shape rotatedRectangle = at.createTransformedShape(rectangle);
g2d.draw(rotatedRectangle);

你提到"碰撞"在标题中。如果您打算在某种碰撞检测中使用此矩形,您应该注意到它不能直接与两个任意Shape个对象相交。特别是,您不能将Shape rotatedRectangle与另一个Shape otherRotatedRectangle相交,而只能与Rectangle otherRectangle相交。如果这是一个问题,你有几个选择,但这更适合一个专门的问题。