2017-01-19 3 views
1

Я создаю небольшую игру space invaders.Перекрытие callback никогда не называлось

В create функции Я создаю враг

enemies = game.add.group(); 
enemies.enableBody = true; 
enemies.physicsBodyType = Phaser.Physics.ARCADE; 
enemies.x = 100; 
enemies.y = 50; 

for (var y = 1; y < 200; y += 50) { 
    for (var x = 233; x <= 800; x += 50) { 
     var enemy = enemies.create(x, y, 'enemy'); 
     enemy.anchor.setTo(0.5, 0.5); 
     enemy.body.moves = false; 
    } 
} 

и пулю

bullets = game.add.group(); 
bullets.enableBody = true; 
bullets.physicsBodyType = Phaser.Physics.ARCADE; 
bullets.createMultiple(30, 'bullet'); 
bullets.setAll('anchor.x', 0.5); 
bullets.setAll('anchor.y', 1); 
bullets.setAll('outOfBoundsKill', true); 
bullets.setAll('checkWorldBounds', true); 

и установить перекрытие обратного вызов

game.physics.arcade.overlap(bullets, enemies, collisionHandler); 

Но, к сожалению, когда пуля не перекрывает противник, ничего случается.

Callback является

function collisionHandler (bullet, enemy) { 
    console.log("poft"); 
    bullet.kill(); 
    enemy.kill(); 
} 
+1

При использовании функции обновления: 'game.physics.arcade.overlap (пули, враги, collisionHandler, NULL, это)' [пример] (HTTP: // phaser.io/examples/v2/arcade-physics/group-vs-group) –

+1

Вот оно! Пожалуйста, разместите его как ответ. – Gabriel

ответ

2

В вашем случае вам нужно только, чтобы проверить, есть ли столкновение между обеими группами, поэтому вы решили использовать метод «перекрытия», который будет оцениваться в обновлении функции:

function update() { 
    game.physics.arcade.overlap(bullets, enemies, collisionHandler, null, this); 
} 

Метод получает пять аргументов, вы можете проконсультироваться с ними here.

И простой пример физики Arcade: Group vs Group

+1

Это может быть объяснение, так как следующий человек, увидевший это, может не знать, в чем проблема. – maniak1982

 Смежные вопросы

  • Нет связанных вопросов^_^