Я возился с 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}
Почему они не обновляются. Я хотел бы иметь возможность использовать их, чтобы определить, какие направления не разрешать, когда я анализирую ключи для движений. Я иду об этом правильным путем?