2016-12-07 11 views
1

Я создаю простую бесконечную бегуновую игру с Phaser.io. enter image description here У меня есть всадник, и объект всадника продолжает двигаться вправо. На его пути появилось несколько препятствий. Я хочу определить, когда происходит столкновение. Но я, кажется, не в состоянии обнаружить какое-либо столкновение или перекрытие. Пожалуйста помоги!Не удалось обнаружить столкновение с 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);  
} 

ответ

1

Наряду с ответом Б. Наим в:

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

должны быть в update(), поскольку он должен проверять перекрытие в каждом кадре.

+0

Спасибо! Мне это не хватало. теперь это работает. –

1

Я думаю, вам также нужно включить физику на игрока спрайта.

game.physics.arcade.enable(player); 

Кроме того, в моей игре я поставил первый параметр overlap как спрайта, а второй параметр является группой. Хотя это не должно иметь значения в соответствии с Phaser docs, но вы можете попробовать просто убедиться.

+0

Спасибо. Я сделал это. Я пропустил, чтобы написать его в вопросе. Исправлено это. –

2

Прежде чем вы сможете проверить наличие каких-либо столкновений между спрайтами, вам необходимо включить физику. Вы можете сделать это

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

Вы должны также включить физику для игрока спрайта

game.physics.arcade.enable(player);

+0

Спасибо. Я сделал это. Я пропустил, чтобы написать его в вопросе. Исправлено это. –