我正在编写一个简单的游戏,或者看起来似乎具有在鼠标移动时旋转Rectangle
的功能。这一开始似乎不是问题,但它只是一个问题。当鼠标在面板上移动时,矩形应该做的是围绕一个点旋转。
如果你看图片,当鼠标移动时Rectangle
会旋转。我知道您可以使用Graphics2D
的旋转功能。
g2d.rotate(angle, centerx, centery);
这不是很完整,因为我无法获得移动矩形的坐标。这会旋转完整的图形!我怎样才能绘制这个Rectangle以便它能够做到这一点。关于如何开始,我不知道。请帮忙。
答案 0 :(得分:2)
更多代码和上下文会很好,但基于当前的问题:您可以创建一个转换后的形状。特别是,Rectangle
和Rectangle2D
实现了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
相交。如果这是一个问题,你有几个选择,但这更适合一个专门的问题。