此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

随机化游戏玩法

这是 Gamedev Phaser 教程 16 个步骤中的第 16 步。我们的游戏看似已经完成了,但仔细观察就会发现,球在整个游戏中始终以相同的角度从球板上反弹。这意味着每局游戏都十分相似。为了解决这一问题并提高可玩性,我们应该让反弹角度更具随机性;本文将介绍具体做法。

让反弹更具随机性

我们可以根据球击中球板的确切位置改变球的速度。每次运行 hitPaddle() 方法时,使用如下代码修改 x 速度即可。现在将这行代码添加到你的代码中,然后试试看。

js
class ExampleScene extends Phaser.Scene {
  // ...
  hitPaddle(ball, paddle) {
    this.ball.anims.play("wobble");
    ball.body.velocity.x = -5 * (paddle.x - ball.x);
  }
  // ...
}

这里有一点巧思:球板中心与球击中位置之间的距离越大,新的速度就越高。此外,方向(向左或向右)也由这个值决定:如果球击中球板左侧,它会向左反弹;击中右侧时则会向右反弹。这一效果来自对给定数值进行的一些试验;你也可以自行尝试,看看会发生什么。当然,这并非完全随机,但确实能让游戏玩法更加难以预测,也更加有趣。

比较你的代码

以下是你目前应该得到的结果,可以实时运行。若要查看其源代码,请点击“运行”按钮。

总结

你已经完成了所有课程,恭喜!至此,你已经学习了 Phaser 的基础知识以及简单 2D 游戏背后的逻辑。

后续练习

你还可以在游戏中做更多事情:添加任何你认为能让游戏更有趣的内容。这只是对 Phaser 提供的众多实用方法的基础介绍。以下是一些扩展小游戏的建议,供你开始尝试:

  • 添加第二个球或球板。
  • 每次碰撞时改变背景颜色。
  • 更换图像并使用你自己的图像。
  • 当砖块被快速地连续摧毁时,给予额外奖励分数(或你选择的其他奖励)。
  • 创建具有不同砖块布局的关卡。

务必查看不断增加的示例列表和官方文档。如果你需要帮助,也可以访问 Phaser Discourse 论坛

你也可以返回本教程系列的索引页