我正在尝试开发一款具有坠落敌人的躲闪风格的游戏,该游戏的特色是让玩家可以在按住空格键的同时“冲刺”。
当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 {};
}
答案 0 :(得分:0)
您的代码将玩家的速度设置为每次调用更新时将其当前速度加倍,通常是每秒60次。因此,播放器的速度正在快速地翻倍,因此它们会因为屏幕速度而消失。
为避免这种情况,请为玩家的速度定义一个常数,并将速度设置为该常数的两倍。
这是我在自己制作的游戏中使用的一些代码来实现这一目标:
if(Game.controls.Run.isDown) {
player.body.velocity.x = playerSpeed*2;
}
playerSpeed
是定义玩家水平移动速度的常数,在您的情况下为160。
您应该能够为您的代码进行修改。