Hel*_*ium 5 unity-game-engine game-physics
我面临着一个关于触发器的非常简单的问题,但我看不到任何解决方法。我只想在触发器内的OnTriggerExit
对象被禁用时调用该函数。
这是在空场景中重现问题的方法:
在 (0,0,0) 处创建一个立方体,使用碰撞器作为触发器和非常简单的以下脚本:
public class OnTriggerExitTest : MonoBehaviour
{
private void OnTriggerExit( Collider other )
{
Debug.Log( "Exiting : " + other.name );
}
private void OnTriggerEnter( Collider other )
{
Debug.Log( "Entering : " + other.name );
}
}
Run Code Online (Sandbox Code Playgroud)使用球体碰撞器和不使用重力的刚体在 (0,0,0) 处创建球体
将球体移出盒子,OnTriggerExit
被调用
将球体移回 (0,0,0),OnTriggerEnter
被调用
禁用球,OnTriggerExit
是不是叫
启用回球体,OnTriggerEnter
称为
显然,OnTriggerExit
当我禁用球体时,我想被调用。你知道任何解决方案吗?
我正在使用 Unity 5.4.1f
我当然可以在OnDisable
我的领域的功能中使用事件,但它不是很干净。我只是不明白为什么OnTriggerExit
不是被调用而是OnTriggerEnter
被调用。
从技术上讲,Unity 没有理由无法OnTriggerExit
在您的场景中进行调用。然而,一个可能的原因是“其他”碰撞器是空的,因为它已被破坏,如果不处理,会弄乱很多情况。
但是,您可以通过使用来解决这个问题OnTriggerStay
。它应该在每一帧被调用,第一次在你的场景中没有被调用可能意味着另一个碰撞器被禁用。