2014-05-18 88 views
0

我正在嘗試創建一個觸發區域,以便當您通過Is Trig觸發器檢查球體對撞機時,音樂開始啓動,並且當您退出音樂時停止。只有一個問題。如果我真的從球形對撞機內部開始,向前邁進一步,那麼「在清醒時播放」已經打開的音頻停止一秒鐘,音頻重新開始。我猜,一旦我移動OnTriggerEnter函數被調用,所以它重新啓動。我可以用什麼方法開始播放球體內的球員,而一旦移動就不會重新開始音頻?OnTriggerEnter重新啓動音頻

#pragma strict 

private var theCollider: String; 

function OnTriggerEnter (other : Collider) 
{ 
theCollider = other.tag; 
if(theCollider == "Player") 
{ 
audio.Play(); 
audio.loop = true; 
} 

} 

function OnTriggerExit (other : Collider) 
{ 
theCollider = other.tag; 
if(theCollider == "Player") 
{ 
audio.Stop(); 
audio.loop = false; 
} 
} 

回答

2

回答

使用AudioSource.isPlaying確定的是音頻剪輯正在播放。只有在沒有時才調用Play

function OnTriggerEnter (other : Collider) 
{ 
    theCollider = other.tag; 
    if (theCollider == "Player" && !audio.isPlaying) 
    { 
     audio.Play(); 
     audio.loop = true; 
    } 
} 

旁註

記住一個黃金法則:如果變量可以進行局部,使局部的。

違反此規則會導致您在上一個問題中顯示的代碼出錯(請參閱我對RaycastHit Randomly Gets 2 Hits的評論)。我想說的是private var theCollider: String;。你可以製作theCollider局部變量,你應該。

+0

謝謝你,我見過!audio.isPlaying之前使用過,但我完全忘了。此外,我會嘗試從現在開始使可變的本地變量。 –

+0

歡迎您:) –