2012-08-26 32 views
2

我已經開始使用C#慢慢學習Unity了,到目前爲止它一直是一個爆炸!OnTriggerEnter被調用但變量從未設置

我碰到的一個小問題(我希望這是一個小問題),並得到了堅持,並從那時起一直有所質疑我的理智。

在它運行首先我產生對飛原始的(球)並附加一個腳本,它的代碼我的主要腳本,看到紙條檢查球被觸發。

主要腳本

bool createNav (Vector3 _start) { 

     GameObject nav = GameObject.CreatePrimitive(PrimitiveType.Sphere); 
     nav.AddComponent<NavTrigger>(); 

     nav.collider.isTrigger = true; 

     nav.transform.localScale = new Vector3(1f,1f,1f); 
     nav.transform.position = _start; 

     return nav.GetComponent<NavTrigger>().Triggered; 
    } 

我的其他腳本

private bool triggered = false; 

    void OnTriggerEnter() { 

     this.triggered = true; 
    } 

    public bool Triggered { 

     get { return this.triggered; } 
    } 

可悲的是,它仍然返回false,無論它運行OnTriggerEnter代碼。

請,如果任何人有任何意見或建議,都讓我知道,我會嘗試做任何事情,使這項工作。

非常感謝您的幫助! :)

回答

2

OnTriggerEnter需要一個參數(對撞機等),否則將不匹配的簽名統一預期。

private bool triggered = false; 

    void OnTriggerEnter(Collider other) { 
     Debug.Log("Triggered"); 
     this.triggered = true; 
    } 

    public bool Triggered { 

     get { return this.triggered; } 
    } 
} 

此外,作爲文檔指出:

注意,觸發事件,如果對撞機之一也 附帶有剛體只發送。

+0

http://docs.unity3d.com/Documentation/Components/class-BoxCollider.html在頁面底部,您會發現一些組件需求。希望能幫助到你。 –