本文是《Phaser 系列》的一部分。点击这里查看系列的第一篇文章。
你可以检测到物理启用的物体之间的碰撞。
Phaser 为我们提供了两个方便的方法来开始。
我们有 collider
和 overlap
。两者都可以让我们检测对象是否接近彼此,但有一个区别: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,您将看到物体以较小或较大的能量反弹。