gpt4 book ai didi

javascript - 将车向前移动至旋转方向

转载 作者:行者123 更新时间:2023-12-02 20:52:46 25 4
gpt4 key购买 nike

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

我添加了一个功能,可以让汽车进行 360 度旋转。但是我无法让汽车朝上述方向移动。我该如何解决这个问题?

我已在此处加载代码:https://plnkr.co/edit/J9737Y0l6GuDb94c

汽车轮换代码:

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;
}
}

目前发生的情况是这样的(我尝试旋转然后按下向上键)

enter image description here

最佳答案

通过反复试验,并在 game dev stack exchange 的帮助下,这是一种解决方案:

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();
};

完整代码:https://plnkr.co/edit/Ekkm0hbu5PbNWwjM

关于javascript - 将车向前移动至旋转方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61564606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com