这篇翻译不完整。请帮忙从英语翻译这篇文章

这是Gamedev Phaser教程 16 第10步您可以在Gamedev-Phaser-Content-Kit / demos / lesson10.html完成本课程后找到源代码

现在接下来的挑战 - 球和砖块之间的碰撞检测。幸运的是,我们可以使用物理引擎来检查单个对象(如球和桨)之间的碰撞,也可以检测对象和组之间的碰撞。

砖/球碰撞检测

物理引擎使一切都变得更容易 - 我们只需要添加两个简单的代码。首先,在你的update()函数中添加一行,检查球和砖之间的碰撞检测,如下所示:

function update() {
    game.physics.arcade.collide(ball, paddle);
    game.physics.arcade.collide(ball, bricks, ballHitBrick);
    paddle.x = game.input.x || game.world.width*0.5;
}

球的位置是根据组中所有砖的位置计算的。第三个可选参数是发生冲突时执行的功能ballHitBrick()创建这个新功能作为代码的底部,就在结束</script>标签之前,如下所示:

function ballHitBrick(ball, brick) {
    brick.kill();
}

就是这样!重新加载你的代码,你应该看到新的碰撞检测工作正常。

感谢Phaser,有两个参数传递给函数 - 第一个是球,我们在碰撞方法中明确定义,第二个是球碰撞的砖组中的单个砖。在功能内部,我们从屏幕上删除所讨论的砖块,只需运行其kill()方法即可。

您将期望在使用纯JavaScript时编写更多自己的计算机来实现碰撞检测这是使用框架的好处 - 您可以为Phaser留下大量无聊的代码,并专注于制作游戏中最有趣和最有趣的部分。

比较你的代码

您可以在下面的现场演示中查看本课程的完成代码,并使用它来更好地了解它的工作原理:

下一步

我们可以打砖块并删除它们,这已经是游戏的一个很好的补充。结果,更好地计算被毁砖增加得分

文档标签和贡献者

 此页面的贡献者: j787701730
 最后编辑者: j787701730,