2015-04-12 184 views
0

我正在开发一个简单的僵尸生存游戏。 该脚本附加在一个空的GameObject中,该GameObject充当玩家的健康状况。更新功能无法正常工作

#pragma strict 

var health = 100; 
var attack = 10; 
var otherAttackDelay = 5; 

function Attack1() { 
    health -= attack; 
    Debug.log ("Under Attack 1!"); 
    yield WaitForSeconds (otherAttackDelay); 
    Attack2(); 
} 

function Attack2() { 
    health -= attack; 
    Debug.log ("Under Attack 2!"); 
} 

function Update() { 
    if (health == 80) { 
     Debug.log ("Die!"); 
    } 
} 

选手有100健康,攻击僵尸10.有僵尸袭击发生前5秒延迟一次。

在函数Update中,我写了一个条件,如果玩家的健康等于80(2次攻击),将会显示一条Debug消息,并显示消息“Die!”。

问题是,当僵尸只袭击一次(90人会在那里)立即显示“死亡!”。我究竟做错了什么?

问候。

+1

这里有不少错别字,像'attack var = 10;'和'health - = attack;' –

+0

是的,对不起。我不会说英文,那是一个翻译错误。我正在修复代码。 – gecko

+0

是否“正在攻击2!”在“死亡”之前注销?即攻击2()在Attack1()之后立即被调用? –

回答

0

而不是在Update函数中不断检查健康状况。无论是Attack1还是Attack2,或者更好,都可以在最后检查健康状况。如果这不起作用,我还建议在更新或攻击功能中粘贴一个显示玩家健康状况的调试日志,这样您就可以确保健康不会像您想要的那样达到80。另外,我注意到你正在检查一个确切的数量,这在检查诸如健康的事情时可能有点粗略。尝试做像if(健康< = 80)与(健康== 80)之类的东西。这样,如果你决定留在检查更新功能的健康状况,它不会错过球员的健康80.

希望这有助于!