C# 调用OnTiggerEnter两次

C# 调用OnTiggerEnter两次,c#,unity3d,C#,Unity3d,我正在Unity中编写一个2D平台,需要调用两次OnTiggerEnter函数,我创建了一个公共的碰撞R2D,名为headPos, 我第一次使用OnTiggerEnter2D就是在这里 void OnTriggerEnter2D(Collider2D headPos) { //Run My Code { 我第二次使用它是在这里 void OnTriggerEnter2D(Collider2D other) { //Run More Code { 我得到以下错误 Type 'Player'

我正在Unity中编写一个2D平台,需要调用两次OnTiggerEnter函数,我创建了一个公共的碰撞R2D,名为headPos, 我第一次使用OnTiggerEnter2D就是在这里

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

如何检查两个独立的OnTiggerEnter2D?

用例是什么?你不应该两次使用同一个函数,尤其是在优化的时候


我想你想要实现的是检测同时发生的两个不同的碰撞。在这种情况下,每次传入不同的碰撞对象时,将调用两次函数OnTriggerEnter2D(CollizedR2D headPos)。

当您说不同的触发器时,看起来您试图用触发器检测不同的游戏对象。如果这是真的,那么您可以使用
If
语句来检查触发了哪个游戏对象

您可以使用碰撞器/触发器标记每个身体部位,并使用如下代码进行检测:

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!");
     }
 }

同一函数不能定义两次。你为什么这么做?为什么要调用两次?第一次我需要检测一个完全不同的触发器,第二次我需要检测一个不同的触发器。这没有意义……你想检测多个标记为触发器的游戏对象吗?在游戏开始时,我在游戏的介绍中使用OnTriggerEnter函数,我还需要将其用于游戏机械师,玩家在其中爬行,这样,如果触发(位于其头部所在位置)被激活,玩家将无法站立。@MountainSideStudios-“要检测的不同触发”是什么意思?