Java 2D 游戏旋转导致鼠标故障?

Java 2D Game rotate to mouse glitch?

我正在 Java(无库)中制作游戏。 这是一款 2D 俯视游戏,玩家可以在其中行走并面向鼠标光标。

public Player(int x, int y, int health, int tileId) {
    super(x, y, health);
    tile = new Tile(tileId, false);
    mouseInput = new MouseHandler(screen);
}
public void tick() { // Executed by game tick.
    // x = playerX and y = playerY

    int cursorX = mouseInput.getMousePos()[0];
    int cursorY = mouseInput.getMousePos()[1];

    float X = cursorX - x;
    float Y = cursorY - y;

    rotation = Math.atan2(Y, X);
}

只要玩家在 (0,0),它看起来就不错 如果玩家移动并且鼠标坐标变为负值,它会开始显示奇怪的行为(查看下面的视频)

Youtube: https://www.youtube.com/watch?v=M6ZHCrWvt3Y

精灵的旋转是在另一个class'Screen.java'

中完成的

通过使用:

if (rotation < 360)
    rotation++
else
    rotation = 0

我确认旋转工作正常。

编辑:

public BufferedImage rotate(BufferedImage img, double degree) {
    AffineTransform tx = new AffineTransform();
    tx.rotate(degree, 4, 4);

    AffineTransformOp op = new AffineTransformOp(tx,AffineTransformOp.TYPE_BILINEAR);
    BufferedImage image = op.filter(img,null);
    return image;
}

好的,我修好了。

问题是我正在制作 2d 游戏并设置宽度、高度和比例的游戏比例。 但是我没有按比例划分mouseX和mouseY。

public void mouseMoved(MouseEvent e) {
    mouseX = e.getX() / game.getScale();
    mouseY = e.getY() / game.getScale();
}

我在弄乱gamescale的时候无意中发现了这个问题