到目前为止,我有一个java应用程序,我在其中画一个圆圈(玩家),然后在顶部画一个绿色矩形(枪管)。我有它,所以当玩家移动时,桶会随之移动。我希望它找到鼠标指向的位置,然后相应地旋转桶。有关我的意思的示例,请观看我发现的这个视频http://www.youtube.com/watch?v=8W7WSkQq5SU看看玩家移动鼠标时图像有何反应?
这是目前游戏的样子:
那么我该如何旋转它呢?顺便说一句,我不喜欢使用仿射变换或 Graphics2D 旋转。我希望有更好的方法。谢谢
使用Graphics2D
旋转法确实是最简单的方法。这是一个简单的实现:
int centerX = width / 2;
int centerY = height / 2;
double angle = Math.atan2(centerY - mouseY, centerX - mouseX) - Math.PI / 2;
((Graphics2D)g).rotate(angle, centerX, centerY);
g.fillRect(...); // draw your rectangle
如果您想在完成后删除旋转以便可以继续正常绘制,请使用:
Graphics2D g2d = (Graphics2D)g;
AffineTransform transform = g2d.getTransform();
g2d.rotate(angle, centerX, centerY);
g2d.fillRect(...); // draw your rectangle
g2d.setTransform(transform);
最好只使用Graphics2D
无论如何,用于抗锯齿等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)