2016-09-01 184 views
-1

我編碼在Unity二維一些成熟,需要調用兩次OnTriggerEnter功能,我創建了一個公共Collider2D,命名headPos, 我第一次使用OnTriggerEnter2D在這裏呼叫OnTriggerEnter兩次

void OnTriggerEnter2D(Collider2D headPos) 
{ 
//Run My Code 
{ 

我用它第二次是在這裏

void OnTriggerEnter2D(Collider2D other) 
{ 
//Run More Code 
{ 

我收到以下錯誤

Type 'Player' already defines a member called 'OnTriggerEnter2D' with the same parameter types 

如何檢查兩個單獨的OnTriggerEnter2D?

+0

你無法定義,同樣的功能兩次。你爲什麼做這個?爲什麼要這樣稱呼兩次? – Programmer

+0

第一次我需要一個完全不同的觸發器來檢測,第二次我需要一個不同的觸發器來檢測。 –

+0

這沒有任何意義....你想檢測標記爲觸發器的多個gameobjects? – Programmer

回答

1

當你說不同的觸發器時,它看起來像你試圖用觸發器來檢測不同的gameobjects。如果這是真的,那麼您可以使用if語句來檢查哪個遊戲對象被觸發。

您可以tag身體的每個部位與對撞機/觸發器和下面類似的代碼如下檢測:

void OnTriggerEnter(Collider col) 
{ 
    if(col.CompareTag("head")){ 
     //Run My Code 
     Debug.Log("Head Triggered!"); 
    } 
    else if (col.CompareTag("hand")) 
    { 
     //Run My Code 
     Debug.Log("Hand Triggered!"); 
    } 
    else if (col.CompareTag("leg")) 
    { 
     //Run My Code 
     Debug.Log("Leg Triggered!"); 
    } 
} 

您還可以通過名字對它們進行比較

void OnTriggerEnter(Collider col) 
{ 

    if (col.name == "head") 
    { 
     //Run My Code 
     Debug.Log("Head Triggered!"); 
    } 
    else if (col.name == "hand") 
    { 
     //Run My Code 
     Debug.Log("Hand Triggered!"); 
    } 
    else if (col.name == "leg") 
    { 
     //Run My Code 
     Debug.Log("Leg Triggered!"); 
    } 
} 
0

什麼是用例?你不應該兩次使用相同的函數,特別是當涉及到優化時。

我想你想實現的是在同一時間內發現兩個單獨的碰撞。在這種情況下,你的函數OnTriggerEnter2D(Collider2D headPos)將被調用兩次,每次傳入不同的碰撞對象。