2017-02-16 56 views
3

我試圖讓一個計時器重新啓動,當我在Unity中墜落懸崖。我已經有了一個腳本,可以讓我在一定高度之後重新生成門檻。我想做同樣的事情,但不重新生成,定時器重新啓動。重新啓動計時器與統一重生

public class Timer : MonoBehaviour { 

    public Text timerText; 
    private float startTime; 
    private bool finished = false; 
    private bool started = false; 

    void Update() 
    {  
     if(!started || finished) 
      return; 

     float t = Time.time - startTime; 

     string minutes = ((int) t/60).ToString(); 
     string seconds = (t%60).ToString("f2"); 

     timerText.text = minutes + ":" + seconds;  
    } 

    public void StartTimer() 
    { 
     started = true; 
     startTime = Time.time; 
    } 

    public void StopTimer() 
    { 
     finished = true; 
     timerText.color = Color.yellow;  
    } 
} 

我重生腳本是在我的相機鑽機,它是

public class respawn : MonoBehaviour 
{ 
    public float threshold; 

    void FixedUpdate() 
    { 
     if (transform.position.y < threshold) 
      transform.position = new Vector3(403, 266, 337); 

    } 
} 

你有任何想法如何做呢?

+1

你可以分享你的代碼重生?理論上它應該是幾乎相同的東西。 –

回答

4

你只需要重新啓動定時器當你遇到下降的情況。 將是很好,如果你在你的重生腳本都定時器的參考,像這樣:

public class respawn : MonoBehaviour 
{ 
    public Timer timer; 
    public float threshold; 

    void FixedUpdate() 
    { 
     if (transform.position.y < threshold) 
     { 
     //transform.position = new Vector3(403, 266, 337); 
     timer.StartTimer(); 
     } 

    } 
} 
3

只需調用startTimer所()再次和你的方法重置完成:

// ... 
public void StartTimer() 
{ 
    finished = false; 
    started = true; 
    startTime = Time.time; 
} 

public void StopTimer() 
{ 
    finished = true; 
    timerText.color = Color.yellow;  
} 

不要忘記停止你的定時器在你的重生腳本:

public Timer Timer; 

void FixedUpdate() 
{ 
    if (transform.position.y < threshold) 
    { 
     Timer.StopTimer(); 
     transform.position = new Vector3(403, 266, 337); 
    } 

}