碰撞器调用 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_area
的 MonoBehaviour
上调用它。
但是在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.
}
我有这样的层次结构:
在 parent 我有以下组件:
名为 DropDetector
的 child 有一个标记为触发器的对撞机。名为 drop_area
的 child 也有一个对撞机,但这个未标记为触发器。但目前我的 OntriggerEnter 和 Exit 函数正在从 drop_area
collider 调用,尽管它没有被标记为触发器。为什么会这样?我该如何阻止它发生?
DropArea
脚本和刚体附加到名为 IncrementA_DropArea
如果需要更多信息或说明,请告诉我,以便我进行说明!
这是按预期工作的。来自 MonoBehaviour.OnTriggerExit(Collider)
上的统一文档:
This message is sent to the trigger and the collider that touches the trigger.
您无法避免在 drop_area
的 MonoBehaviour
上调用它。
但是在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.
}