我正在制作类似于传统魔法塔的游戏,现在我在处理怪物和勇士之间的战斗时遇到了问题。
这是我在update()中的代码:
function update(){
// ...
game.physics.arcade.collide(braver, monsters, battle, null, this);
// ...
}
这是我的战斗():
function battle(player, monster) {
var x = (player.attack > monster.defence ? player.attack - monster.defence : 0);
var y = (monster.attack > player.defence ? monster.attack - player.defence : 0);
battleScene.visible = true;
while (1) {
if (Date.now() > battleTimer)
{
battleTimer = Date.now() + 1000;
monster.health -= x;
if (monster.health <= 0) {
monster.kill();
player.gold += monster.gold;
player.exp += monster.exp;
break;
}
player.health -= y;
if (player.health <= 0) {
player.kill();
break;
}
}
}
battleScene.visible = false;
}
battleScene
是一个群体,战斗盒。令我疯狂的是,battleScene根本没有在屏幕上显示(即使使用battleScene.visible = true
)。
我已经尝试了game.world.bringToTop(battleScene);
,但它也无效。那么我该如何解决这个问题?
答案 0 :(得分:0)
battleScene
是什么类型的对象?如果它是Phaser.State
你需要以状态Manager (Documentation)开始该状态
game.state.start('battle_scene_key')
如果它是Phaser.Sprite
,您需要将其添加到游戏世界才能进行绘制。
// assuming `this` is a Phaser.State
state.add.existing(battleScene)