У меня есть игра, где вражеский «корабль разведчиков» находится сверху, а корабль игрока - внизу.Я пытаюсь повернуть оружие противника (это просто прямоугольник), чтобы оно всегда указывало на то, где находится игрок.Это не вращается должным образом, и я уверен, что я сделал что-то не так в моих расчетах.Вот метод обновления и рисования, который у меня сейчас есть.Это класс вражеского корабля-разведчика, поэтому 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);
}
}