如何在Phaser中检查精灵和特定图层拼贴的碰撞?

时间:2017-08-19 09:27:58

标签: html5 phaser-framework

我在另一个楼梯上的一块土地上制作了2张瓷砖地图。我做引力,一切都很好地与地面,但我不知道如何检查与瓷砖梯子的接触。我这样创造:

//Ground
map.ground = game.add.tilemap('map-ground', 32, 32);
map.ground.addTilesetImage('tileset');
layer.ground = map.ground.createLayer(0);
layer.ground.setScale(3);
map.ground.setCollision(174);//ID grounds
//Ladders&Hide
map.laddersAndHide = game.add.tilemap('map-ladders&hide', 32, 32);
map.laddersAndHide.addTilesetImage('tileset');
layer.laddersAndHide = map.laddersAndHide.createLayer(0);
layer.laddersAndHide.setScale(3);
map.laddersAndHide.setCollision(168);// ID ladders
然后他做了这样的检查:

game.physics.arcade.collide(player, layer.ground);
game.physics.arcade.collide(player, layer.laddersAndHide, function () {
    console.log(true);
});

然而我意识到与地面的碰撞阻挡了与楼梯的碰撞。当我移除与地面的碰撞时,梯子工作(虽然不是我需要的,我无法通过它)。所以我试过了:

game.physics.arcade.overlap(player, layer.laddersAndHide, testFunc, null, this);

然后连续执行函数testFunc。也许是因为我没有在图层中指定特定的id。但我该怎么说呢?现在我已经停止了这个:

game.physics.arcade.collide(player, [layer.ground, layer.laddersAndHide], function () {
     console.log(this);
});

我想也许有办法检查联系人究竟是什么层?

我为英语道歉

0 个答案:

没有答案