Войти
ПрограммированиеФорумВеб

Phaser.js проблема с физикой у тайлмапы

#0
23:58, 3 мар. 2015

Доброго времени суток.
Имеется такая штука:

this.game.physics.startSystem(Phaser.Physics.P2JS);
this.game.physics.p2.setImpactEvents(true);

this.game.physics.p2.gravity.y = 0;
this.game.physics.p2.gravity.x = 0;
this.game.physics.p2.restitution = 0.8;

this.map = this.add.tilemap('tilemap');
this.map.addTilesetImage('background_tiles', 'tileset');

this.backgroundLayer = this.map.createLayer('background');
this.objectsLayer = this.map.createLayer('objects');
this.starsLayer = this.map.createLayer('stars');

this.backgroundLayer.resizeWorld();

this.map.setCollisionBetween(2, 7, true, 'objects');
this.map.setCollisionBetween(2, 7, true, 'stars');
this.map.setCollisionBetween(2, 7, true, 'background');

this.game.physics.p2.convertTilemap(this.map, this.backgroundLayer);
this.game.physics.p2.convertTilemap(this.map, this.objectsLayer);
this.game.physics.p2.convertTilemap(this.map, this.starsLayer);

this.player = this.add.sprite(
    this.world.centerX,
    this.world.centerY,
    'player'
);
this.player.anchor.setTo(0.5, 0.5);
this.game.physics.p2.enable(this.player);
this.player.body.setCircle(16);
this.game.camera.follow(this.player);
this.player.kinematic = true;
Перерыл вроде как всю документацию, пробую так:
this.map.setTileIndexCallback([7], function(a){
    console.log(a);
}, this);
тишина в консоли. Когда пробую так:
this.player.body.onBeginContact.add(function(body, shapeA, shapeB, equation){
    console.log(body);
}, this);
то да, в консоль сыпется при каждой коллизии, но  получить таким образом можно только сам физический объект, который P2.Body, из которого до самого тайла не достучаться.
Так же пробовал setPostBroadphaseCallback,  ситуация практически та же, как с предыдущим случаем.
Вопрос в чем - каким образом, используя P2, можно определить с каким именно тайлом произошла коллизия, чтобы его удалить, ну и, соответственно, добавить звездочку игроку?
С arcade было бы все проще, но нужна более сложная физ. модель.


ПрограммированиеФорумВеб

Тема в архиве.