Phaser 3:物质物理检测碰撞

8

我正在尝试检测两个物体是否相撞,但我不确定如何做。

我有以下场景,向其中添加了两个物理图像。我只需要一种检测它们相撞的方法。

export class MainGame extends Scene {
  public create() {
    // Create the player
    this.player = this.matter.add.image(300, 100, 'player')

    // Create a pillar
    let pillar = this.matter.add.image(500, 0, 'pillar1', null, { isStatic: true })

    // Somehow detect collision between the two...
  }
}

我无法弄清楚如何检测玩家何时与柱子发生碰撞。我搜索到的所有信息都是使用街机物理引擎来完成此操作,但我正在使用物理引擎。

我找不到任何关于如何检测碰撞然后运行函数的信息。

2个回答

11

在这里查看示例要在碰撞时调用函数,请像示例中使用“oncollisionStart”事件。

this.matter.world.on('collisionstart', function (event, bodyA, bodyB) {
    console.log('collision');
});

1
另一种方法是将碰撞事件回调添加到对象本身。
var paddle = this.matter.add.image(400, 550, 'assets', 'paddle.png');
var paddle.setOnCollide(pair => {
  // pair.bodyA
  // pair.bodyB
});

请查看 enableCollisionEventsPlugin() 的文档:https://photonstorm.github.io/phaser3-docs/Phaser.Physics.Matter.MatterPhysics.html,以及一个碰撞对是什么样子的:https://brm.io/matter-js/docs/files/src_collision_Pair.js.html# 您还可以监听特定的碰撞。
var paddle.setOnCollideWith(ball, pair => {
  // Do something
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接