2015-04-12 244 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.

希望這有助於!