旋转一个对象指向鼠标

我正在使用slick2d进行这个过程,并试图旋转一个小面对面的鼠标。 我的问题是,在我的游戏minigun实际上是旋转,但没有对所有的鼠标! 另外,迷你炮还有180度,在那里停了下来。

这是我的minigun类,我把它放在另一个核心类中进行更新和渲染。

public class Minigun { private Animation Shoot; private SpriteSheet sheet; private int x = 200, y = 150; private double angleToTurn; private Input input; public Minigun(){ try { sheet = new SpriteSheet(new Image("res/minigun.png"), 130, 34); Shoot= new Animation(sheet, 1, 0, 2, 0, true, 1, true); Shoot.setLooping(true); input = new Input(1); } catch (SlickException e) { e.printStackTrace(); } } public void render(Graphics g){ g.pushTransform(); g.rotate(x + Shoot.getWidth() / 2 , y + Shoot.getHeight() /2, (int) angleToTurn); Shoot.draw(x, y); g.popTransform(); } public void update(){ double mX = input.getMouseX(); double mY = input.getMouseY(); angleToTurn = Math.toDegrees(Math.atan2(mY - y, mX - x)); System.out.println(angleToTurn); } } 

正如你所看到的,minigun在x轴的总体方向上跟随着鼠标,但从来没有真正的360度转动来正确对齐。

我自己解决了这个问题! 将鼠标的坐标打印到控制台后,我意识到在input中只有一些东西缺失。 果然,我将GameContainer添加到minigun的构造函数,并将input设置为等于GameContainer.getInput();. 它现在完美的工作:D

 public Minigun(GameContainer container){ try { sheet = new SpriteSheet(new Image("res/minigun.png"), 130, 34); Shoot= new Animation(sheet, 1, 0, 2, 0, true, 1, true); Shoot.setLooping(true); input = new Input(1); input = container.getInput(); } catch (SlickException e) { e.printStackTrace(); }