C# Unity-OnTriggerEnter未记录冲突

C# Unity-OnTriggerEnter未记录冲突,c#,unity3d,C#,Unity3d,我正在尝试对2D角色和碰撞器对象进行碰撞。我已经定义了OnTiggerEnter函数,以便在输入触发器时在调试器中显示消息。该角色是Unity标准资源包(包含BoxCollizedR2D)中的“CharacterRobotBoy”资源,我希望它与另一个附加了BoxCollizedR2D的对象碰撞,设置为触发器。我在第二个物体上打了勾 using System.Collections; using System.Collections.Generic; using UnityEngine; pu

我正在尝试对2D角色和碰撞器对象进行碰撞。我已经定义了OnTiggerEnter函数,以便在输入触发器时在调试器中显示消息。该角色是Unity标准资源包(包含BoxCollizedR2D)中的“CharacterRobotBoy”资源,我希望它与另一个附加了BoxCollizedR2D的对象碰撞,设置为触发器。我在第二个物体上打了勾

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickUpCheck : MonoBehaviour {


    private int pickUpCount;

    // Use this for initialization
    void Start () {
        pickUpCount = 0;
    }


    void OnTriggerEnter(Collider collider)
    {
       // if (collider.gameObject.name == "RobotBoy")
       //     pickUpCount++;
        Debug.Log("PickUp " + pickUpCount);
    }

    // Update is called once per frame

    void Update () {

    }
}
我尝试将脚本附加到角色和其他对象,但似乎无法注册与触发器的冲突

/edit-我读到有或曾经有一个OnTriggerInter2d。我试着调用它,但在VisualStudio中无法识别。不确定它是否仍然存在或者我做错了什么

/edit-将代码切换到-

void OnTriggerEnter2D(Collider2D collider)
{
   // if (collider.gameObject.name == "RobotBoy")
   //     pickUpCount++;
    Debug.Log("PickUp " + pickUpCount);
}
但还是没有运气

/edit-@Eddge已经为角色和拾取对象设置了一个公共层,尽管我认为在没有设置层的情况下仍然会发生碰撞

答案是信息丰富的,但我确保我的设置中已经有了所描述的组件——两个对象上的碰撞器,其中一个对象上存在刚体,另一个设置为触发器

/edit已解决-好的,所以我清理了调试(感谢@Eddge的建议)。我将脚本移动到角色,并注意到碰撞正在发生,但没有与拾取对象发生碰撞

我切换了OnTiggerEnter2D中的代码以输出碰撞对象的名称,这有助于我更清楚地了解发生了什么:

void OnTriggerEnter2D(Collider2D collider)
{
    Debug.Log(collider.gameObject.name);
}

原来问题出在我改装为皮卡的预制件中的BoxCollizer2D上。我重建了游戏对象,解决了这个问题

如果您正在制作2D游戏,则必须使用OnTriggerInter2D(CollizedR2D other)。目前,您正在使用OnTiggerEnter,它只会注册3D碰撞。另外,请确保传递了一个碰撞的R2D作为函数的参数

因此,请将代码更改为:

 void OnTriggerEnter2D(Collider2D collider)
{
   // if (collider.gameObject.name == "RobotBoy")
   //     pickUpCount++;
    Debug.Log("PickUp " + pickUpCount);
}

因此,我确保为发生碰撞提供了正确的组件(详细说明)。事实证明,我的第一个问题是使用OnCollisionCenter而不是OnCollisionEnter2D(请注意,必须使用CollizeR2D参数)。感谢卡洛斯澄清了这一点

但遗憾的是,碰撞仍然不会发生

然后我检查以确保图层没有问题。层可用于组织对象之间的碰撞交互。更多信息和信息

最后,我将脚本从拾取切换到播放器控制器,发现它能够与拾取以外的对象发生碰撞,并带有碰撞对象名称的调试日志


我重新创建了游戏object-object、boxCollizer2D和脚本,碰撞开始工作

你的角色有刚体组件吗?是的,一个刚体组件看看Carlos的答案,然后看看这些答案:关于第二个,OnTiggerEnter 2d只适用于2d碰撞器,OnTiggerEnter只适用于3d碰撞器。@Eddge听起来像个复制品!国旗或投票等。谢谢,新的信息为我在这两个链接。但仍然无法从冲突脚本中获得响应。为了澄清这一点,角色对象同时具有长方体碰撞器2D和刚体2D。拾取对象只有一个长方体碰撞器2D,但后来我添加并尝试了带有Rigidbody2D的脚本。仍然没有响应…尝试了此操作,但在运行时仍然没有可见的调试消息。很高兴知道,谢谢!