ぱふの自由帳

ぱふの技術ブログ。メインはUnity。最近はUnity1Weekの放送してます。良ければフォローお願いします、、

OnCollisionExit2D()はDestroyでも呼ばれるのか

はじめに

2Dのことだけしか調べてません(`・ω・´)
”多分”3Dでも一緒じゃないかなー。ってことなんで、誰か実際に調べて結果だけください。

本題

悩み

OnCollisionExit2D()という関数はTriggerではないCollider同士が接触から離れた際に呼び出される関数です。この関数、接触中の片方のオブジェクトがDestoryされた場合はどうなるんだ?という疑問ががが...

結果

Destory(gameObject)だろうがSetActive(false)だろうがColliderが消滅しても離れたという判定になるようです。

豆知識?

  • 消滅したオブジェクト側でも消滅前にOnCollisionExit2D()が呼ばれる

  • 接触しているオブジェクトを両方同時にDestroyしてもOnCollisionExit2D()が両方とも呼ばれる

  • OnCollisionEnter2D()内でDestroyするとOnCollisionExit2D()OnCollisionEnter2D()の順で処理されるオブジェクトが生じてしまう可能性がある(私の環境では100%)ので注意

おわり

「記事内でColliderと書いてるけど”Collider2D”じゃね?」とか言われるかなーと思いつつ修正が面倒なのでそのままで...(笑)

初心者の方や熟練者の方を問わずTwitterのフォローお待ちしています...(`・ω・´) ヨロシク!