Я делаю гоночную игру сверху вниз, используя фреймовую структуру, которая использует JS. У меня возникают проблемы с тем, чтобы автомобиль замедлялся, в настоящий момент он просто останавливается, когда кнопка не нажата. Я хочу, чтобы он замедлялся, чтобы остановиться. Вот мой код до сих пор: создания: функция() {Установите максимальную и текущую скорость автомобиля в Phaser
//run in canvas mode
this.game.renderer.clearBeforeRender - false;
this.game.renderer.roundPixels = true;
//Add arcade physics
this.game.physics.startSystem(Phaser.Physics.ARCADE);
//Add background sprites
this.game.add.sprite(0, 0, 'background');
this.game.add.sprite(0, 0, 'track');
//Add car sprite
car = this.game.add.sprite(800, 135, 'car-concept');
//Car physics settings
this.game.physics.enable(car, Phaser.Physics.ARCADE);
car.body.drag.set(100);
car.body.maxVelocity.set(200);
car.body.maxAngular = 500;
car.body.angularDrag = 500;
car.body.collideWorldBounds = true;
//Game input
cursors = this.game.input.keyboard.createCursorKeys();
this.game.input.keyboard.addKeyCapture([ Phaser.Keyboard.SPACEBAR]);
//pivot point
car.pivot.x = car.width * .3;
car.pivot.y = car.height * .5;
car.anchor.setTo(0.3, 0.5);
//scale the car
car.scale.setTo(0.3, 0.3);
},
update: function() {
car.body.velocity.x = 0;
car.body.velocity.y = 0;
car.body.angularVelocity = 0;
if(cursors.left.isDown)
{
car.body.angularVelocity = -200;
}
else if(cursors.right.isDown)
{
car.body.angularVelocity = 200;
}
if(cursors.up.isDown)
{
this.game.physics.arcade.velocityFromAngle(car.angle, -200, car.body.velocity)
if(this.currentSpeed < this.maxSpeed)
{
this.currentSpeed += 10;
}
}
else
{
if(this.currentSpeed > 0)
{
this.currentSpeed -= 10;
}
}
if(cursors.down.isDown)
{
this.game.physics.arcade.velocityFromAngle(car.angle, 200, car.body.velocity)
if(this.currentSpeed > 0)
{
this.currentSpeed -= 30;
}
}
},
speed: function()
{
this.maxSpeed = 100;
this.currentSpeed = 0;
},
Я просмотрел несколько вопросов здесь о той же проблеме, и это, как я попал в точку, где я сейчас нахожусь. Я установил maxSpeed и currentSpeed, но по какой-то причине он не позволит мне использовать его. Консоль в браузере не дает мне никаких ошибок, поэтому, если кто-нибудь может направить меня на это, это будет здорово!
Спасибо.
Я использовал это решение, но безрезультатно. Кажется, что разница в том, что движение вперед должно быть высоким, около 9000, а не 200. Я уверен, что это не так, что currentSpeed и maxSpeed не будут правильно указаны. –
Это не связано с ссылкой на currentSpeed. Я боюсь, что основной цикл ядра, который вы используете, сломан. Прежде чем начинать вводить какие-либо ограничения скорости, вам нужно сначала запустить эту работу. Как я уже сказал, вам нужно удалить все, используя скорость в вашем коде, и удалить ограничения (maxVelocity и т. Д.) И вернуть его обратно к базовой структуре выше, прежде чем добавлять ограничения скорости. – PhotonStorm