OnCollisionExit2D()はDestroyでも呼ばれるのか
はじめに
2Dのことだけしか調べてません(`・ω・´)
”多分”3Dでも一緒じゃないかなー。ってことなんで、誰か実際に調べて結果だけください。
本題
悩み
OnCollisionExit2D()
という関数はTriggerではないCollider同士が接触から離れた際に呼び出される関数です。この関数、接触中の片方のオブジェクトがDestoryされた場合はどうなるんだ?という疑問ががが...
結果
Destory(gameObject)
だろうがSetActive(false)
だろうがColliderが消滅しても離れたという判定になるようです。
豆知識?
消滅したオブジェクト側でも消滅前に
OnCollisionExit2D()
が呼ばれる接触しているオブジェクトを両方同時にDestroyしても
OnCollisionExit2D()
が両方とも呼ばれるOnCollisionEnter2D()
内でDestroyするとOnCollisionExit2D()
→OnCollisionEnter2D()
の順で処理されるオブジェクトが生じてしまう可能性がある(私の環境では100%)ので注意
おわり
「記事内でColliderと書いてるけど”Collider2D”じゃね?」とか言われるかなーと思いつつ修正が面倒なのでそのままで...(笑)