无法检测到与 Phaser.IO 的碰撞

Not able to detect collision with Phaser.IO

我正在使用 Phaser.io 构建一个简单的无限跑酷游戏。 我有一个骑手,骑手对象一直向右移动。 有几个障碍阻碍了它。我想检测碰撞何时发生。但我似乎无法检测到任何碰撞或重叠。请帮忙!

我的一些代码片段如下 -

function create () {
    //obstacles initialization

    obstacles = game.add.group();
    obstacles.enableBody = true;

    //player initialization

    player = game.add.sprite(10, 250, 'tuktuk'); game.physics.arcade.enable(player);
    player.body.bounce.y = 0.2;
    player.body.gravity.y = 800;
    player.body.bounce.x = 0.2;
    player.body.collideWorldBounds = true;
    player.animations.add('right', [0,1,2], 20, true);
    create_random_obstacle();
    game.physics.arcade.enable(obstacles);
    game.world.bringToTop(player);
    game.physics.arcade.overlap(obstacles, player, after_collision, null, null);    
}

我认为您还需要在玩家精灵上启用物理。

game.physics.arcade.enable(player);

另外,在我的游戏中,我将overlap的第一个参数设置为精灵,第二个参数是组。虽然根据 Phaser docs 应该无关紧要,但您可以尝试确定一下。

您需要先启用物理,然后才能检查精灵之间的任何碰撞。你可以通过

game.physics.startSystem(Phaser.Physics.ARCADE);

您还应该为玩家精灵启用物理效果

game.physics.arcade.enable(player);

连同 B. Naeem 的回答:

game.physics.arcade.overlap(obstacles, player, after_collision, null, null);    

应该在 update() 中,因为它必须检查每一帧的重叠。