У моего спрайта нет тела, и game.physics.enable не действует

Я пытаюсь включить физический движок P2JS для спрайта в своей игре, и game.physics.enable, кажется, работает только для физического движка Arcade. Что тут происходит?

Пример:

player.body
//=> null
game.physics.enable(player, Phaser.Physics.P2JS, true)
//=> undefined
player.body
//=> null
game.physics.enable(player, Phaser.Physics.NINJA, true)
//=> undefined
player.body
//=> null
game.physics.enable(player, Phaser.Physics.ARCADE, true)
//=> undefined
player.body
//=> b.Physics.Arcade.Body {sprite: Player, game: b.Game, type: 0, offset: b.Point, position: b.Point…}

person Ajedi32    schedule 07.05.2014    source источник


Ответы (2)


Вы начали бегать P2?

game.physics.startSystem(Phaser.Physics.P2JS);    
game.physics.p2.enable(sprite);

Также убедитесь, что вы используете версию Phaser с P2 в комплекте.

person PhotonStorm    schedule 08.05.2014
comment
Спасибо, так получилось. Я знал, что, должно быть, упустил что-то очевидное. - person Ajedi32; 11.05.2014

ты должен попробовать это, это сработает

game.physics.startSystem(Phaser.Physics.P2JS);
sprite.physicsBodyType = Phaser.Physics.P2JS;
game.physics.p2.enable(sprite);
person Muhammad Tauseen    schedule 04.08.2015
comment
Можете ли вы уточнить свой ответ и разницу между ним и принятым ответом, например, почему вы установили physicsBodyType? - person shoover; 05.08.2015
comment
Первая строка включает систему p2. Вторая строка устанавливает тип тела на тип тела p2, чтобы он мог использовать свои методы (например, столкновение и т. Д.). и третья строка — включить p2 на спрайте. - person Muhammad Tauseen; 07.08.2015