Как реализовать спринт в Phaser JS? - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь разработать игру в стиле уклонения с падающими врагами, в которой у игрока есть возможность «бежать», удерживая клавишу пробела.

Я пытался умножить скорость игрока, пока space.isdown () имеет значение true, но игрок исчезает после нажатия пробела.

function update() {
  if (gameState.cursors.left.isDown) {
    gameState.player.setVelocityX(-160);
  } else if (gameState.cursors.right.isDown) {
gameState.player.setVelocityX(160);
  } else {
gameState.player.setVelocityX(0);
  }
  //Sprint Ability
 if (gameState.player.velocityx != 0 && gameState.cursors.space.isDown){
  gameState.player.setVelocityX(gameState.player.velocityx * 2);
  } else {};
}

1 Ответ

0 голосов
/ 29 июня 2019

Ваш код устанавливает скорость игрока, чтобы удваивать текущую скорость игрока каждый раз, когда вызывается обновление, которое обычно составляет 60 раз в секунду. Таким образом, скорость игрока невероятно быстро удваивается, следовательно, они исчезают, потому что они скорость экрана.

Чтобы избежать этого, определите постоянную для скорости игрока и установите скорость, чтобы удвоить эту константу.

Вот код для достижения этой цели, который я использовал в игре, которую я сделал:

if(Game.controls.Run.isDown) {
    player.body.velocity.x = playerSpeed*2;
}

playerSpeed - это константа, определяющая скорость горизонтального движения игроков, в вашем случае она равна 160.

Вы можете изменить это для своего кода.

...