1. 程式人生 > >Phaser3入門教程:第一個Phaser3遊戲(中文版)(七)

Phaser3入門教程:第一個Phaser3遊戲(中文版)(七)

  • 鍵盤控制角色

碰撞已經處理好了,但我們還要讓角色動起來。不知道你是否會馬上想起去某些文件上搜尋如何加入監聽器的方法,但這裡你大可不必如此。Phaser內部已經有一個很好的鍵盤管理程式,只要用下面一段程式碼就可以使用:

cursors = this.input.keyboard.createCursorKeys();

這裡的集合cursors物件的四個屬性:上,下,左,右,以及所有的按鍵的物件例項。接著在update迴圈中新增下面的程式碼:

if (cursors.left.isDown)

{

    player.setVelocityX(-160);

    player.anims.play('left', true);

}

else if (cursors.right.isDown)

{

    player.setVelocityX(160);

    player.anims.play('right', true);

}

else

{

    player.setVelocityX(0);

    player.anims.play('turn');

}

if (cursors.up.isDown && player.body.touching.down)

{

    player.setVelocityY(-330);

}

儘管程式碼較多,但還是很好理解的。

第一件事是判斷左鍵是否按下,是的話我們就給角色一個負的橫向速度,並播放角色向左跑的動畫。如果按下右鍵就反過來處理。通過把速度歸零,我們可以角色停下來。

當按鍵按下時,角色會移動。按鍵鬆開時,立馬停止。Phaser還能通過動量和加速度實現更多複雜的動作,但在這個例子中只要做到這點就可以了。後面一段程式碼判斷沒有鍵按下時,就讓角色橫向速度為零,並播放‘turn’的動畫。

跳起來

最後一段程式碼增加了跳起的能力。上方向鍵就是跳起鍵,我們要判斷上鍵的是否按下狀態。還要檢查角色是否在正地面上,如不是,那說面它正在空中。

如果兩種條件都滿足,我們就給角色一個縱向的330畫素/秒的速度。因為重力的原因角色會自動落回地面。通過這些設定,我們就可以探索我們的遊戲世界了。載入part7.html到瀏覽器中試試看吧!試著調整一下330那個數值,看看跳起來有是什麼不同效果。