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

时间:2016-06-06 19:32:09

标签: java graphics2d

我正在用Java创建一个游戏(No Libraries)。 它是一个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

精灵的旋转是在另一个类“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;
}

1 个答案:

答案 0 :(得分:0)

好的我修好了。

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

HashMap<String, Object> map=new HashMap<>();
map.put("products", products);
map.put("hello","hai");     
mv.addAllObjects(map);      
return mv;

在搞乱游戏规模时我偶然发现了这个问题。