第3阶段:物质物理检测碰撞

时间:2018-05-07 22:12:03

标签: javascript phaser-framework matterjs

我试图检测两个物体何时相互碰撞,但我不知道该怎么做。

我有以下场景,它将两个物理图像添加到场景中。我只需要一种方法来检测两者何时发生碰撞。

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 个答案:

答案 0 :(得分:2)

查看示例here后, 要在碰撞时调用函数,请使用' oncollisionStart'例如this示例中的事件。

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

答案 1 :(得分:0)

另一种方法是将碰撞事件回调添加到对象本身。

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
});