Java 对象向其所面对的方向移动

Java 对象向其所面对的方向移动,java,vector,graphics,awt,graphics2d,Java,Vector,Graphics,Awt,Graphics2d,我正在做一个2d赛车游戏,目前我正在努力让赛车开动。我不需要汽车的物理特性是真实的,我只需要汽车(本例中为矩形)朝着它所面对的方向移动。所以如果我要把车右转20度,我希望它能朝那个方向行驶。但我不确定我将如何做到这一点(我对向量做了一些研究,但不太了解)。当前,长方体向所有方向移动,但不旋转 import java.awt.*; public class Box { public boolean[] KeyHold; public double posx, posy, ang

我正在做一个2d赛车游戏,目前我正在努力让赛车开动。我不需要汽车的物理特性是真实的,我只需要汽车(本例中为矩形)朝着它所面对的方向移动。所以如果我要把车右转20度,我希望它能朝那个方向行驶。但我不确定我将如何做到这一点(我对向量做了一些研究,但不太了解)。当前,长方体向所有方向移动,但不旋转

import java.awt.*;

public class Box {

    public boolean[] KeyHold;
    public double posx, posy, angle;

    public Box() {
        posx = 1280/2;
        posy = 720/2;
    }

    public void update() {
        KeyHold = Inputs.getKeyHold();
        if(KeyHold[39]) {
            posx++;
        } else if (KeyHold[37]) {
            posx--;
        }

        if(KeyHold[40]) {
            posy++;
        } else if (KeyHold[38]) {
            posy--;
        }
    }

    public void draw(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.clearRect(0, 0, 1280, 720);
        g2d.setColor(Color.black);
        g2d.fillRect((int) posx, (int) posy, 30, 60);
    }

}

这可以使用M A T H来完成。你可以将一个二维速度向量
car.v
(长度与汽车速度成比例)与每辆汽车相关联,以表示其方向。“更新世界”时,每辆车的位置变为(
car.x+=h*car.v.x;car.y+=h*car.v.y;
)。要旋转速度矢量,需要一个2*2旋转矩阵