btm*_*424 2 javascript phaser-framework
我正在使用 Phaser.io
我刚刚学会了如何设置碰撞器功能:
this.physics.add.collider(enemies, platforms, function (enemy) {
enemy.destroy();
gameState.score += 10;
});
Run Code Online (Sandbox Code Playgroud)
但我想在没有平台的情况下做同样的事情。我想使用世界边界而不是平台。
我知道你可以这样设置世界边界:
player.setCollideWorldBounds(true);
Run Code Online (Sandbox Code Playgroud)
我试过了:
this.physics.add.collider(enemies, this.worldBounds, function (enemy) {
enemy.destroy();
gameState.score += 10;
});
Run Code Online (Sandbox Code Playgroud)
但这行不通。
有任何想法吗?
我已经为你找到了解决方案:
首先,将敌人的精灵设置为与setCollideWorldBounds(true)发生碰撞,如下所示:
enemy.setCollideWorldBounds(true);
Run Code Online (Sandbox Code Playgroud)
其次,打开敌人精灵的选项来监听WorldBound 事件,如下所示:
enemy.body.onWorldBounds = true;
Run Code Online (Sandbox Code Playgroud)
第三也是最后,设置“wordbounds”事件监听器并使敌人消失,如下所示:
enemy.body.world.on('worldbounds', function(body) {
// Checks if it's the sprite that you'listening for
if (body.gameObject === this) {
// Make the enemy sprite unactived & make it disappear
this.setActive(false);
this.setVisible(false);
}
}, enemy);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2350 次 |
| 最近记录: |