Graphics2D Расчет вращения - PullRequest
       30

Graphics2D Расчет вращения

0 голосов
/ 22 декабря 2018

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