Javascript 将轿厢向前移动到旋转方向

Javascript 将轿厢向前移动到旋转方向,javascript,Javascript,我正在进行一个简单的JavaScript项目,将汽车移动到特定的方向,以增强我对游戏开发的了解 我已经添加了一个功能,使汽车旋转360度运动。但是,我无法让汽车朝着上述方向行驶。我该如何解决这个问题 我在这里加载了代码: 车辆轮换代码: Game._rotate = function (moveAngle, direction) { switch (direction) { case 'UP': Car.angleInDegrees = 0; break;

我正在进行一个简单的JavaScript项目,将汽车移动到特定的方向,以增强我对游戏开发的了解

我已经添加了一个功能,使汽车旋转360度运动。但是,我无法让汽车朝着上述方向行驶。我该如何解决这个问题

我在这里加载了代码:

车辆轮换代码:

Game._rotate = function (moveAngle, direction) {
  switch (direction) {
    case 'UP':
      Car.angleInDegrees = 0;
      break;
    case 'RIGHT':
      Car.angleInDegrees += moveAngle;
      break;
    case 'DOWN':
      Car.angleInDegrees = 180;
      break;
    case 'LEFT':
      Car.angleInDegrees += moveAngle;
      break;
  }
  this.car.angle = Car.angleInDegrees * (Math.PI / 180);
}
车辆移动代码:

Game.update = function (delta) {
  // var dirx = 0;
  // var diry = 0;

  if (Keyboard.isDown(Keyboard.LEFT)) {
    Car.moveAngle = 1
    this._rotate(Car.moveAngle, Car.left)
  }
  else if (Keyboard.isDown(Keyboard.RIGHT)) {
    Car.moveAngle = -1
    this._rotate(Car.moveAngle, Car.right)
  }
  else if (Keyboard.isDown(Keyboard.UP)) {
    accelerate();
  }
  // else if (Keyboard.isDown(Keyboard.DOWN)) {
  //   this._rotate(dirx, Car.down)
  //   diry = accelerate(diry, Car.backward);
  // }
  else {
    decelerate();
  }

  this.car.move(delta, Car.moveAngle, 0);
  this.camera.update();
};

function accelerate() {
  Car.acceleration += 1;
  if (Car.speed >= 0) {
    if (Car.speed < Car.maxSpeed) {
      Car.speed += Car.acceleration;
    }
  }
}

function decelerate() {
  if (Car.speed > 0) {
    Car.speed = Car.speed - Car.friction;
  }

  if (Car.acceleration > 0) {
    Car.acceleration = Car.acceleration - Car.friction;
  }

  if (Car.speed < 0) {
    Car.speed = 0;
  }

  if (Car.acceleration < 0) {
    Car.acceleration = 0;
  }
}
目前这就是我尝试旋转然后按下向上键时发生的情况


通过反复试验,在的帮助下,这里有一个解决方案:

Car.prototype.move = function () {
  var angle = Car.angleInDegrees * Math.PI / 180
  this.x -= 2 * Math.sin(angle);
  this.y += 2 * Math.cos(angle);
};
完整代码如下:

Game.update = function () {
  if (Keyboard.isDown(Keyboard.LEFT)) {
    Car.moveAngle = 1
    this._rotate(Car.moveAngle, Car.left)
  }
  else if (Keyboard.isDown(Keyboard.RIGHT)) {
    Car.moveAngle = -1
    this._rotate(Car.moveAngle, Car.right)
  }
  else if (Keyboard.isDown(Keyboard.UP)) {
    this.car.move();
  }
  else if (Keyboard.isDown(Keyboard.DOWN)) {
    this.car.move();
  }
  else {
    decelerate();
  }
  this.camera.update();
};