得分

這是 Gamedev Phaser 教程 的 16 個步驟中的第 11 步。在本文中,我們將為遊戲新增一個計分系統。擁有分數也可以讓遊戲更有趣——你可以嘗試打破自己的最高分,或者你朋友的分數。

我們將使用一個單獨的屬性來儲存分數,並使用 Phaser 的 text() 方法將其列印到螢幕上。

新屬性

在先前定義的屬性之後新增兩個新屬性

js
class ExampleScene extends Phaser.Scene {
  // ... previous property definitions ...
  scoreText;
  score = 0;
  // ... rest of the class ...
}

向遊戲顯示新增得分文字

現在,在 create() 方法的末尾新增這一行

js
this.scoreText = this.add.text(5, 5, "Points: 0", {
  font: "18px Arial",
  color: "#0095dd",
});

text() 方法可以接受四個引數

  • 繪製文字的 x 和 y 座標。
  • 將要渲染的實際文字。
  • 用於渲染文字的字型樣式。

最後一個引數看起來非常像 CSS 樣式。在我們的例子中,分數文字將是藍色的,大小為 18 畫素,並使用 Arial 字型。

銷燬磚塊時更新分數

每次球擊中磚塊時,我們將增加分數,並更新 scoreText 以顯示當前分數。這可以使用 setText() 方法完成——將下面看到的兩個新行新增到 hitBrick() 方法中

js
class ExampleScene extends Phaser.Scene {
  // ...
  hitBrick(ball, brick) {
    brick.destroy();
    this.score += 10;
    this.scoreText.setText(`Points: ${this.score}`);
  }
}

目前就這些了——重新載入你的 index.html,檢查每次擊中磚塊時分數是否更新。

Compare your code

這是您到目前為止應該看到的效果,即時執行。要檢視其原始碼,請單擊“播放”按鈕。

後續步驟

我們現在有了一個計分系統,但是如果沒有獲勝的方式,玩遊戲和保持分數有什麼意義呢?讓我們看看如何新增一個勝利狀態,讓我們能夠 贏得遊戲