本文是《Phaser 系列》的一部分。点击这里查看系列的第一篇文章。

你可以检测到物理启用的物体之间的碰撞。

Phaser 为我们提供了两个方便的方法来开始。

我们有 collideroverlap。两者都可以让我们检测对象是否接近彼此,但有一个区别:collider 在物体相遇时会自动使其反弹,而 overlap 允许物体彼此重叠。

以下是如何添加一个 collider

const collisionHappened = (dog, cat) => {
 projectile.destroy()
}

this.physics.add.collider(dogs, cats, collisionHappened, null, this)

以下是如何添加一个 overlap

const overlapHappened = (dog, cat) => {
 projectile.destroy()
}

this.physics.add.overlap(dogs, cats, collisionHappened, null, this)

您还可以设置屏幕边界,使得物理对象在到达屏幕边缘时不消失。

调用物体的 setCollideWorldBounds() 方法,并传递 true 值:

const dog = this.physics.add.sprite(20, 20, 'dog')
dog.setCollideWorldBounds(true)

如果您还想在物体到达屏幕边界时使其反弹,调用:

dog.setBounce(1)

您传递的数字将确定其反弹速度。试试设置为 0.5 或 1.5,您将看到物体以较小或较大的能量反弹。