2016-09-01 11 views
-1

私はユニティで2Dプラットフォーマーをコード化し、二回OnTriggerEnter関数を呼び出す必要があるんだ、私はheadPosという名前のパブリック・Collider2Dを、作成した、 私はOnTriggerEnter2Dを初めて使用するときは、ここでコールOnTriggerEnter二度

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

そして、私はそれを使用する二度目は、私は次のエラー

Type 'Player' already defines a member called 'OnTriggerEnter2D' with the same parameter types 
を取得し、ここで

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

です210

2つの別々のOnTriggerEnter2Dを確認するにはどうすればよいですか?

+0

によってそれらを比較することができます二度。なぜあなたはこれをやっている?なぜそれを2回呼びたいのですか? – Programmer

+0

初めて検出するには全く異なるトリガーが必要ですが、2回目には別のトリガーを検出する必要があります。 –

+0

それは理にかなっていません....あなたはトリガーとしてマークされている複数のゲームオブジェクトを検出したいですか? – Programmer

答えて

1

トリガーが異なると、トリガーで異なるゲームオブジェクトを検出しようとしているようです。これが当てはまる場合は、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

どのようなユースケースですか?同じ機能を2度使用することは決してありません。特に、最適化については特にそうです。

私はあなたが達成したいと思うのは、同時に起こっている2つの別々の衝突を検出することです。この場合、関数OnTriggerEnter2D(Collider2D headPos)は、毎回渡される異なる衝突オブジェクトで2回呼び出されます。