Как использовать клавиши A, S, D, W в Phaser? - PullRequest
1 голос
/ 14 октября 2019

Я использую Phaser.io

Я хотел бы использовать клавиши A, S, D, W. Я знаю, что вы можете использовать клавиши со стрелками следующим образом:

create(){
  ...
  gameState.cursors = this.input.keyboard.createCursorKeys();
}

update(){
  if (gameState.cursors.left.isDown) {
    gameState.player1.setVelocityX(-160);
  } else if (gameState.cursors.right.isDown) {
    gameState.player1.setVelocityX(160);
  }
}

Я пытался переключить .left. для .A. и .right. для .D., но это не работает.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 15 октября 2019

Я нашел решение:

  • Сначала , объявите переменную, которая будет содержать будущие ключи:
let keyA;
let keyS;
let keyD;
let keyW;
  • Second , в функции create() добавьте ключи к соответствующим переменным:
keyA = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.A);
keyS = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.S);
keyD = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.D);
keyW = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.W);
  • Third , давайте попробуем нажать клавиши сейчас, чтобы посмотреть, работают ли они. В функции update() добавьте следующий фрагмент кода :
if(keyA.isDown) {
   console.log('A key pressed')
} else if(keyS.isDown) {
   console.log('S key pressed')
} else if(keyD.isDown) {
   console.log('D key pressed')
} else if(keyW.isDown) {
   console.log('W key pressed')
}

Вы можете нажать каждую отдельную клавишу и проверить сообщение consoleчтобы узнать, будет ли он напечатан.

Чтобы получить список всех кодов клавиш клавиатуры для дальнейшего использования:

console.log(Phaser.Input.Keyboard.KeyCodes)
1 голос
/ 14 октября 2019

Вы можете попробовать использовать Phaser.KeyCode.A, чтобы обнаружить нормальные символы клавиатуры. Просмотрите все коды клавиш.

Phaser 2.4.4 - Phaser.KeyCode

Обновление:

Phaser 3- Phaser.input.Keyboard.KeyCodes

...