调用OnTriggerEnter两次

本文关键字:两次 OnTriggerEnter 调用 | 更新日期: 2023-09-27 18:05:01

我在Unity中编写一个2D平台游戏,需要调用OnTriggerEnter函数两次,我创建了一个Public Collider2D,名为headPos,我第一次使用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的?

调用OnTriggerEnter两次

当你说不同的触发器时,看起来你是在尝试用触发器检测不同的游戏对象。如果这是真的,那么你可以使用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!");
     }
 }

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

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