2017-01-22 143 views
0

我使用OnTriggerStay2D()函數,它可以在碰撞器內部的某個對象上執行某些操作(無所謂)。但是,有時候我有另一個,所以總共有2個對撞機可能停留在對撞機內部。兩個對撞機不在相同的Game Object。 我想是這樣的:Unity - OnTriggerStay2D()for 2 collider同時使用

void OnTriggerStay2D(Collider2D other) 
{ 
    if (other.gameObject.CompareTag("Obj1")) 
    { 
     //do something 
    } 
    if (other.gameObject.CompareTag("Obj2")) 
    { 
     //do something else 
    } 
} 

做別的事情Obj1已經是裏面只是從未發生過。 OnTriggerStay2D()如何讓對撞機一次感應兩個對撞機?

編輯澄清:

OnTriggerStay2D()仍然被調用。問題是,代碼從來沒有得到if聲明,我必須做別的評論。

+0

你是說如果有一個對象已經發生碰撞,那麼'OnTriggerStay2D'永遠不會再被調用?如果這是錯誤的,請編輯您的問題並進行更多解釋。 – Programmer

+0

不,我剛纔說的是_do其他東西不會發生。這隻意味着代碼永遠不會「進入」if語句。 – agiro

+0

@Programmer編輯,對不起,讓它困惑。 – agiro

回答

1

當調用OnTriggerStay2D函數時,它不報告正在觸摸的多個GameObjects。它僅返回一個觸發器/ Collider2D信息。在下一個物理框架之後,它將被再次調用。這次它將返回觸及相同GameObject的其他觸發器/ Collider2D信息。

在你的情況下,返回OBJ1後,OnTriggerStay2D將在下一幀的物理被稱爲左右與OBJ 2返回。