【问题标题】:OnTriggerExit being called by collider not marked as trigger error UnityOnTriggerExit 被对撞机调用未标记为触发错误 Unity
【发布时间】:2018-12-26 22:04:30
【问题描述】:
我有这样的阶层:
在父级中,我有以下组件:
名为DropDetector 的孩子有一个标记为触发器的对撞机。并且名为drop_area 的孩子也有一个对撞机,但这个没有标记为触发器。但是目前我的 OntriggerEnter 和 Exit 函数正在从drop_area collider 调用,尽管它没有被标记为触发器。为什么会这样?我如何阻止它发生?
DropArea 脚本和刚体附加到名为 IncrementA_DropArea 的父级
如果需要更多信息或澄清,请告诉我,以便我澄清!
【问题讨论】:
标签:
c#
unity3d
triggers
collider
【解决方案1】:
这是按预期工作的。来自MonoBehaviour.OnTriggerExit(Collider) 上的统一文档:
此消息被发送到触发器和接触触发器的碰撞器。
您无法避免在drop_area 的MonoBehaviours 上调用它。
但是,在MonoBehaviour.OnTriggerExit(Collider)的实现中,可以先检查被调用的MonoBehaviour的collider是否不是触发器,如果是则退出方法:
public Collider myCollider;
...
myCollider = GetComponent<Collider>();
...
void OnTriggerExit(Collider other)
{
if (!myCollider.isTrigger)
{
return;
}
// Do stuff for trigger here.
}