我有一个游戏,敌人的“侦察船”在顶部,玩家的船在底部。我正在尝试旋转敌人的枪(只是一个矩形),以使其始终指向玩家所在的位置。它的旋转不正常,我很确定自己在计算中做错了什么。这是我目前拥有的更新和绘制方法。这属于敌人的“侦察船”类,因此x
只是敌人的x位置。 pShip
是玩家的飞船。
public void update() {
if(MainGame.pShip != null && x-MainGame.pShip.x != 0) {
System.out.println(Math.atan((y-MainGame.pShip.y)/(x-MainGame.pShip.x)));
gunAngle = Math.atan((y-MainGame.pShip.y)/(x-MainGame.pShip.x));
}
}
public void draw(Graphics2D g2) {
if(isAlive) {
g2.setColor(Color.BLUE);
g2.fillOval(x, y, width, width);
g2.setColor(Color.BLACK);
AffineTransform old = g2.getTransform();
g2.rotate(gunAngle, x+width/2, y+width/2);
g2.fillRect(x+width/2-10, y+width/2, 20, 40);
g2.setTransform(old);
}
}