得分

这是 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

这是您到目前为止应该看到的效果,实时运行。要查看其源代码,请单击“播放”按钮。

后续步骤

我们现在有了一个计分系统,但是如果没有获胜的方式,玩游戏和保持分数有什么意义呢?让我们看看如何添加一个胜利状态,让我们能够 赢得游戏