碰撞器调用 OnTriggerExit 未标记为触发错误 Unity

OnTriggerExit being called by collider not marked as trigger error Unity

我有这样的层次结构:

在 parent 我有以下组件:

名为 DropDetector 的 child 有一个标记为触发器的对撞机。名为 drop_area 的 child 也有一个对撞机,但这个未标记为触发器。但目前我的 OntriggerEnter 和 Exit 函数正在从 drop_area collider 调用,尽管它没有被标记为触发器。为什么会这样?我该如何阻止它发生?

DropArea 脚本和刚体附加到名为 IncrementA_DropArea

的 parent

如果需要更多信息或说明,请告诉我,以便我进行说明!

这是按预期工作的。来自 MonoBehaviour.OnTriggerExit(Collider) 上的统一文档:

This message is sent to the trigger and the collider that touches the trigger.

您无法避免在 drop_areaMonoBehaviour 上调用它。

但是在MonoBehaviour.OnTriggerExit(Collider)的实现中,可以先判断被调用的MonoBehaviour的collider是否是trigger,如果是就退出:

public Collider myCollider;

...

myCollider = GetComponent<Collider>();

...

void OnTriggerExit(Collider other) 
{
    if (!myCollider.isTrigger) 
    {
        return;
    } 

    // Do stuff for trigger here.
}