我正在编写一个简单的游戏,或者看起来是这样,它具有随着鼠标移动而旋转矩形
的功能。起初这似乎不是一个问题,但它却成了一个问题。矩形应该做的是当鼠标在面板上移动时围绕一个点旋转。
如果你看图片,当鼠标移动时,矩形
会旋转。我知道您可以通过 Graphics2D
使用旋转功能。
g2d.rotate(angle, centerx, centery);
这不是很有帮助,因为我无法获取移动矩形的坐标。这会旋转整个图形!我怎样才能绘制这个矩形以便它做到这一点。我不知道如何开始。请帮忙。
最佳答案
更多的代码和上下文会很好,但基于当前的问题:您可以创建一个转换后的形状。特别是,Rectangle
和Rectangle2D
实现了Shape
接口(interface)。您可以创建一个 AffineTransform
来表示您当前对 Graphics
进行的旋转。所以代码的相关部分大致应该是这样的
Rectangle2D rectangle = ...
AffineTransform at = AffineTransform.getRotateInstance(
angle, centerx, centery);
Shape rotatedRectangle = at.createTransformedShape(rectangle);
g2d.draw(rotatedRectangle);
您在标题中提到了“碰撞”。如果您打算在某种碰撞检测中使用此矩形,您应该注意,不可能直接使两个任意 Shape
对象相交。特别是,您不能将 ShaperotatedRectangle
与另一个 Shape otherRotatedRectangle
相交,而只能与 Rectangle otherRectangle
相交。如果这是一个问题,您有多种选择,但这更适合一个专门的问题。
关于java - 移动和旋转碰撞矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23459290/