调用OnTriggerEnter两次

时间:2016-09-01 07:22:29

标签: c# unity3d

我在Unity编写2D平台游戏并需要两次调用OnTriggerEnter函数,我创建了一个名为headPos的Public Collider2D, 我第一次使用OnTriggerEnter2D就在这里

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?

2 个答案:

答案 0 :(得分: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!");
     }
 }

答案 1 :(得分:0)

用例是什么?您永远不应该使用相同的功能两次,尤其是在优化时。

我想你想要达到的目的是检测同时发生的两次不同的碰撞。在这种情况下,您的函数OnTriggerEnter2D(Collider2D headPos)将被调用两次,每次都传递不同的碰撞对象。