Graphics2D旋转计算

时间:2018-12-22 02:12:50

标签: rotation trigonometry graphics2d

我有一个游戏,敌人的“侦察船”在顶部,玩家的船在底部。我正在尝试旋转敌人的枪(只是一个矩形),以使其始终指向玩家所在的位置。它的旋转不正常,我很确定自己在计算中做错了什么。这是我目前拥有的更新和绘制方法。这属于敌人的“侦察船”类,因此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);
    }
}

0 个答案:

没有答案