2017-01-19 6 views
1

私は小さなspace invadersのようなゲームを作成しています。弾丸は敵、何も重なっていないときコールバックが重複しないようにしました

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); 

をしかし、起こる

コールバックを使用すると、機能のアップデートで評価される「重複」メソッドを使用することを選ぶだろうので、あなただけの、両群間に衝突があるかどうかを確認する必要がありますあなたの場合は

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

phaser.io/examples/v2/arcade-physics/group-vs-group) –

+1

これはそれです!回答として投稿してください。 – Gabriel

答えて

2

次のとおりです。

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

このメソッドは5つの引数を受け取ります。hereを参照してください。

と物理学アーケードの簡単な例: `game.physics.arcade.overlap(弾丸、敵、collisionHandler、ヌル、この)` [例](のhttp://機能更新の使用ではGroup vs Group

+1

これは、次の人がこの問題を修正するための問題を認識していない可能性があるため、説明を付けることができます。 – maniak1982

関連する問題