Почему тело моей аркадной физики не обновляется? Фазер 3 - PullRequest
0 голосов
/ 14 января 2020

Я возился с Phaser 3 уже пару недель. Поэтому, когда дело доходит до этого, я очень новичок в этом.

Итак, я работаю над игрой, вдохновленной покемонами (поколение I - III). В настоящее время я работаю над движением игрока и столкновениями. Таким образом, будучи игрой сверху вниз, я должен проверять наличие столкновений игроков на 4 сторонах игрока, и в этом моя проблема.

В моей сцене я определяю игрока, используя:

this.player = this.add.existing(new TestPlayer(this, 0, 0, "player"));

TestPlayer - это пользовательский класс, который расширяет Phaser.Physics.Arcade.Sprite и содержит только некоторые переменные, связанные с движением. У него нет методов, кроме тех, которые унаследованы.

Я создаю пару деревьев, которые хочу заблокировать игрок.

for(let i = 0; i < 5; i++){
    this.trees[i] = this.add.existing(new Tree(this, 0, 64 + (i * 32), "tree"));
}

this.physics.add.group(this.trees, {name: 'trees'});

Дерево также является пользовательским классом, таким как TestPlayer, он расширяется Phaser.Physics.Arcade.Sprite. У него нет никаких методов, кроме тех, которые унаследованы.

Я заметил, что на данный момент у них нет физических тел. Поэтому я включил их, используя:

this.physics.world.enable(this.player);
this.physics.world.enable(this.trees);

Я использую this.physics.add.collider(this.player, this.trees, this.collideCallback, null, this) для установки обратного вызова. Обратный вызов просто запускает console.log(this.player.body.touching);

У меня также есть простой console.log(this.player.body.touching) в методе обновления.

В обоих случаях console.log они возвращают {none:true, up:false, down:false, left:false, right:false} Почему они не обновляются. Я хотел бы иметь возможность использовать их, чтобы определить, какие направления не разрешать, когда я анализирую ключи для движений. Я иду об этом правильным путем?

...