如何在Phaser JS中实现冲刺功能?

时间:2019-06-27 16:47:48

标签: javascript phaser-framework game-development

我正在尝试开发一款具有坠落敌人的躲闪风格的游戏,该游戏的特色是让玩家可以在按住空格键的同时“冲刺”。

当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 :(得分:0)

您的代码将玩家的速度设置为每次调用更新时将其当前速度加倍,通常是每秒60次。因此,播放器的速度正在快速地翻倍,因此它们会因为屏幕速度而消失。

为避免这种情况,请为玩家的速度定义一个常数,并将速度设置为该常数的两倍。

这是我在自己制作的游戏中使用的一些代码来实现这一目标:

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

playerSpeed是定义玩家水平移动速度的常数,在您的情况下为160。

您应该能够为您的代码进行修改。