在自上而下的射手(Java)中需要帮助让图像旋转以面向鼠标

时间:2013-05-29 21:54:21

标签: java image rotation mousemove

我在游戏中移动玩家时遇到了麻烦。游戏是一个自上而下的射击游戏,其中玩家的位置由W,A,S和D控制。我想通过移动鼠标控制玩家面对的方向。

我知道我需要使用mouseMoved方法来跟踪鼠标,但我在计算角度和实际旋转图像时都迷失了。

图像基本上是一个黑色圆圈,表示枪支伸出。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用播放器和鼠标坐标计算角度:

float angle = (float)(Math.atan2(player.y - mouse.y, player.x - mouse.x));

这将以弧度为单位给出角度。

然后在绘制对象时:

AffineTransform reset = new AffineTransform();
reset.rotate(0, 0, 0);
Graphics2D g2 = (Graphics2D)g;
g2.rotate(angle, player.x, player.y);
//draw the image here
g2.setTransform(reset);