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

View in English Always switch to English

从墙壁反弹

这是 Gamedev Phaser 教程 16 个步骤中的第 6 步。现在已经介绍了物理效果,我们可以开始在游戏中实现碰撞检测——首先我们来看看墙壁。

从世界边界反弹

让球从墙壁反弹的最简单方法是告诉框架,我们要将 <canvas> 元素的边界视为墙壁,不让球移出边界。在 Phaser 中,可以使用 setCollideWorldBounds() 方法轻松实现这一点。在现有的 this.ball.body.setVelocity() 方法调用之后添加此行:

js
this.ball.body.setCollideWorldBounds(true, 1, 1);

true 告诉 Phaser 启用与世界边界的碰撞检测,而两个 1 分别是 x 轴和 y 轴上的反弹系数。这意味着当球碰到墙壁时,它会以碰到墙壁之前的相同速度反弹。再次尝试重新加载 index.html——现在你应该会看到球从所有墙壁反弹,并在画布区域内移动。

比较你的代码

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

下一步

现在开始看起来更像是一个游戏了,但我们还无法以任何方式操控它——是时候介绍玩家挡板和操控了。