从未调用过重叠回调
Overlap callback never called
我正在创建一个类似 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();
}
在您的情况下,您只需要检查两组之间是否存在冲突,因此您可以选择使用将在函数更新中评估的 'overlap' 方法:
function update() {
game.physics.arcade.overlap(bullets, enemies, collisionHandler, null, this);
}
该方法接收五个参数,您可以参考它们here。
以及 Physics Arcade 的简单示例:Group vs Group
我正在创建一个类似 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();
}
在您的情况下,您只需要检查两组之间是否存在冲突,因此您可以选择使用将在函数更新中评估的 'overlap' 方法:
function update() {
game.physics.arcade.overlap(bullets, enemies, collisionHandler, null, this);
}
该方法接收五个参数,您可以参考它们here。
以及 Physics Arcade 的简单示例:Group vs Group