Перезапустить игру с помощью пробела вместо указателя

#javascript #phaser-framework

Вопрос:

Я бы хотел перезапустить свою игру с помощью пробела, а не с помощью мыши. Я пробовал кое-что, но это не сработало, как:

 this.restart.input.keyboard.on('keyup_SPACE', () => {
  this.dino.setVelocityY(0);
  this.dino.body.height = 92;
  this.dino.body.offset.y = 0;
  this.physics.resume();
  this.obsticles.clear(true, true);
  this.isGameRunning = true;
  this.gameOverScreen.setAlpha(0);
  this.anims.resumeAll();
})
 

Это то, что у меня есть:

 this.restart.on('pointerdown', () => {
  this.dino.setVelocityY(0);
  this.dino.body.height = 92;
  this.dino.body.offset.y = 0;
  this.physics.resume();
  this.obsticles.clear(true, true);
  this.isGameRunning = true;
  this.gameOverScreen.setAlpha(0);
  this.anims.resumeAll();
})

this.restart = this.add.image(0, 80, 'restart').setInteractive();
this.gameOverScreen.add([
  this.gameOverText,  this.restart
])
 

Комментарии:

1. Есть ли у вас какие-либо переменные, определяющие, закончилась ли игра? Например, «это … это бег» ? Вы можете добавить условие внутри «прослушивателя пробелов», если игра все еще запущена, выполните действие прыжка, в противном случае запустите игру заново.

2. Да, я это сделал. Вот файл, в котором я его использую, но, похоже, я не могу в этом разобраться. codepen.io/Borsj/pen/YzZNQgq?editors=0010

3. В своем " this.input.keyboard.on('keydown_SPACE', () => " методе добавьте "!this.isGameRunning" проверку в качестве первого условия, и если она больше не выполняется, перезапустите игру и установите "this.isGameRunning = true" так же, как и в вашем "this.restart.on('pointerdown', () =>" методе.

4. Боже, на самом деле все было так просто. Наверное, я слишком долго пялился на свой экран. Спасибо, Стивен!

5. Без проблем, братан, рад, что мой ответ помог тебе!

Ответ №1:

Вы можете поймать keyup событие, подобное этому (проверка keyCode , соответствующая пробелу):

 document.body.addEventListener("keyup", (e) => {
  if(e.keyCode === 32) console.log("Spacebar pressed");
}); 

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

 document.body.addEventListener("keyup", (e) => {
    if(e.keyCode === 32) { 
      this.restart();
    }
});