Фаза 3: Физика Материи обнаруживает столкновение

Я пытаюсь определить, когда два объекта сталкиваются друг с другом, но я не уверен, как это сделать.

У меня есть следующая сцена, которая добавляет два физических изображения на сцену. Мне просто нужен способ определить, когда они сталкиваются.

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...
  }
}

Я не могу понять, как определить, когда игрок сталкивается со столбом. Все, что я искал, это как сделать это с помощью аркадной физики, но я использую физику материи.

Я не могу найти какую-либо информацию о том, как обнаружить столкновение, а затем запустить функцию.

1 ответ

Решение

Посмотрев здесь примеры, чтобы вызвать функцию при столкновении, используйте событие oncollisionStart, как в этом примере.

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

Другой способ сделать это - добавить обратный вызов события столкновения к самому объекту.

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
});
Другие вопросы по тегам