我正在尝试开发一款闪避风格的游戏,其中敌人会掉落,玩家可以在按住空格键的同时“冲刺”。
我曾尝试在 space.isdown() 为真时增加玩家的速度,但一旦按下空格,玩家就会消失。
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 {};
}
最佳答案
您的代码将玩家速度设置为每次调用更新时玩家当前速度加倍,通常为每秒 60 次。因此,玩家的速度以惊人的速度翻了一番,因此他们消失了,因为他们在屏幕上的速度。
为避免这种情况,为玩家的速度定义一个常量,并将速度设置为该常量的两倍。
这是我在自己制作的游戏中使用的一些实现此目的的代码:
if(Game.controls.Run.isDown) {
player.body.velocity.x = playerSpeed*2;
}
playerSpeed
是定义玩家水平移动速度的常量,在您的情况下它似乎是 160。
您应该能够为您的代码修改它。
关于javascript - 如何在 Phaser JS 中实现冲刺能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795542/