如何在 Phaser 中使用 A、S、D、W 键?

btm*_*424 4 javascript phaser-framework

我正在使用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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图切换.left.为.A.与.right.对.D.,但它不工作。

有任何想法吗?

Man*_*cal 8

我找到了一个解决方案:

  • 首先,声明将保存未来键的变量:
let keyA;
let keyS;
let keyD;
let keyW;
Run Code Online (Sandbox Code Playgroud)
  • 其次,在create()函数中,将key添加到对应的变量中:
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);
Run Code Online (Sandbox Code Playgroud)
  • 第三,让我们现在尝试按下按键,看看它们是否有效。在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')
}
Run Code Online (Sandbox Code Playgroud)

您可以按每个单独的键并检查console消息以查看它是否被打印。

要获取所有键盘键代码的列表以供将来参考:

console.log(Phaser.Input.Keyboard.KeyCodes)
Run Code Online (Sandbox Code Playgroud)