我正在与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);
}
答案 0 :(得分:2)
您需要首先启用物理,然后才能检查精灵之间的任何碰撞。你可以通过
来做到这一点 game.physics.startSystem(Phaser.Physics.ARCADE);
你还应该为玩家精灵启用物理
game.physics.arcade.enable(player);
答案 1 :(得分:1)
我认为你还需要在玩家精灵上启用物理。
game.physics.arcade.enable(player);
另外,在我的游戏中,我将overlap
的第一个参数设置为精灵,第二个参数是组。虽然根据Phaser docs这不重要,但你可以试着确定一下。
答案 2 :(得分:1)
与B. Naeem的回答一起:
game.physics.arcade.overlap(obstacles, player, after_collision, null, null);
应该在update()中,因为它必须检查每一帧的重叠。