2017-02-16 11 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); 
    } 

} 
関連する問題