Как установить коллайдер с мировыми границами (Phaser)? - PullRequest
1 голос
/ 12 октября 2019

Я использую Phaser.io

Я только что узнал, как установить функцию коллайдера:

this.physics.add.collider(enemies, platforms, function (enemy) {
  enemy.destroy();
  gameState.score += 10;
});

Но я бы хотел сделать то же самое без платформы. Вместо платформы я хотел бы использовать границы мира.

Я знаю, что вы можете установить границы мира следующим образом:

player.setCollideWorldBounds(true);

Я пробовал:

this.physics.add.collider(enemies, this.worldBounds, function (enemy) {
  enemy.destroy();
  gameState.score += 10;
});

Но это не работает.

Есть идеи?

1 Ответ

2 голосов
/ 13 октября 2019

Я нашел для вас решение:

Сначала , установите спрайт противника так, чтобы он сталкивался с setCollideWorldBounds (true) likeитак:

enemy.setCollideWorldBounds(true);

Секунда , включите опцию для спрайта вашего врага для прослушивания WorldBound events примерно так:

enemy.body.onWorldBounds = true;

В-третьих и, наконец, , установите слушателя событий "wordbounds" и заставьте врага исчезнуть так:

enemy.body.world.on('worldbounds', function(body) {
  // Checks if it's the sprite that you'listening for
  if (body.gameObject === this) {
    // Make the enemy sprite unactived & make it disappear
    this.setActive(false);
    this.setVisible(false);
  }
}, enemy);
...