2017-01-18 5 views
2

私はトリガについて非常に単純な問題に直面していますが、解決方法はありません。私は、のオブジェクトが無効になったときに、OnTriggerExit関数を呼び出すだけです。ここでゲームオブジェクトを無効にするとOnTriggerExitを検出します

は、空のシーンで問題を再現する方法です:

  1. は(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); 
        } 
    } 
    
  2. 、箱から出して重力に

  3. 移動球を使用していない球衝突型加速器と剛体と(0,0,0)で球を作成します。が呼び出さ

  4. OnTriggerExitは、OnTriggerEnterを球をバック有効

  5. 呼ばないで、球を無効OnTriggerEnter

  6. 呼び出され、バック(0,0,0)に球を移動し

OnTriggerExitTest

球体を無効にすると、明らかにOnTriggerExitが呼び出されます。あなたはどんな解決法を知っていますか?

私はもちろんの私の球のOnDisable機能でイベントを使用することができますが、それは非常にきれいではありません

5.4.1fユニティを使用しています。私はなぜOnTriggerExitが呼び出されていないのか分かりませんが、OnTriggerEnterです。

答えて

1

あなたのシナリオでUnityがOnTriggerExitを呼び出せなかった理由は、技術的にはありません。ただし、他のColliderは破壊されているため、他のColliderはnullになり、処理されなければ多くの状況が発生する可能性があります。

ただし、代わりにOnTriggerStayを使用して回避することができます。これはフレームごとに呼び出され、最初にシナリオで呼び出されないと、他のコライダーが無効になってしまう可能性があります。

関連する問題