2013-10-23 291 views
0

我遇到了一些與我的計時器有關的問題我想知道有人可以幫助我。我做了很多Goggle搜索,但主要的Unity答案網站是爲我完成的。在Unity中重置定時器

我想設置一個計時器,一旦我用射線擊中一個物體就開始計數到10。當我不再用射線擊中物體時,我希望計時器停止計數。我應該再次擊中同一個對象,我希望計時器從頭開始重新開始。

我現在擁有的是一個計時器,只有當我看着一個物體時纔開始計時。當我離開時間並且時間已經達到3秒時,這顯示在我的Inspector字段中。但是,當我回頭看同一個東西時,時間跳躍到我看過的東西和不看東西的時候。

有人可以看看我的邏輯,看看我是否失去了什麼?

void Start() 
{ 
    start_time = Time.deltaTime; 
    running_time = 0; 
} 

    void Update() 
{ 

    bool updateTimer = (track_timer && lastHitObject != null); 
    Check(updateTimer); 
} 

// check to see which object my ray has hit 
void HighLight(GameObject nextHitObject) 
{ 
    // Case1: Last ray and new ray both hit objects 
    if(lastHitObject != null && nextHitObject != null){ 

     //1a: same objects, do nothing 
     if(lastHitObject.tag == nextHitObject.tag)return; 

     { //1b: different objects, swap highlight texture 
      lastHitObject.renderer.material = oldMat; 
      lastHitObject = nextHitObject; 
      oldMat = lastHitObject.renderer.material; 
      lastHitObject.renderer.material = highlight_material; 
      track_timer = true; 
      return; 
     } 
    } 

    // Case2: Last ray hit nothing, new ray hit object. 
    if(lastHitObject == null && nextHitObject != null){ 
     ResetTimer(); 
     lastHitObject = nextHitObject; 
     oldMat = lastHitObject.renderer.material; 
     lastHitObject.renderer.material = highlight_material; 
     track_timer = true; 
     return; 
    } 

    // Case3: Last ray hit something, new ray hit nothing 
    if(lastHitObject != null && nextHitObject == null){ 
     lastHitObject.renderer.material = oldMat; 
     lastHitObject = null; 
     track_timer = false; 

     return; 
    } 
} 



    void ResetTimer() 
{ 
    start_time = 0; 
    running_time = 0f; 
    //Debug.Log("resetting timer"); 
} 

回答

0

您還沒有發佈任何內容,計算你看着一個項目的時候,所以我不知道我們的問題,缺什麼代碼。

這就是說,我懷疑問題是您的start_time始終爲零(或接近於零 - 它最初將設置爲調用Start方法的時間,如果立即生效,接近零)。

如果您在ResetTimer方法中設置了start_time = Time.time,那麼您可以計算使用Time.time - start_time查看對象的時間 - 這應該是您要查找的對象。