Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

OnCollisionExit not working when GameObject vanishes

Discussion in 'Scripting' started by matias-e, Aug 27, 2015.

  1. matias-e

    matias-e

    Joined:
    Sep 29, 2014
    Posts:
    106
    Hey! So I'm pushing a GameObject into another with a Rigidbody2D+collider. I have a OnCollisionExit2D on the Rigidbody object. I ran into problem where OnCollisionExit2D is not working when a GameObject gets disabled. The code doesn't register the GameObject vanishing as an exiting collision for some reason. Is there any way around this? Thank you.
     
  2. LeftyRighty

    LeftyRighty

    Joined:
    Nov 2, 2012
    Posts:
    5,148
    A gameobject needs to be active in order for it to interact with the physics engine, so disabling/destroying a gameobject means it will not called any OnTriggerExit/OnCollsionExit functions.

    There is are OnDestroy() and OnDisable() functions which allow you to add in some logic just before a gameobject is destroyed/disabled. You can use them to manually handle whatever logic you need to.
     
  3. Eric5h5

    Eric5h5

    Volunteer Moderator Moderator

    Joined:
    Jul 19, 2006
    Posts:
    32,401
    A solution I used was to translate the object far out of the game world and wait for one physics frame (which causes OnCollisionExit to fire), then destroy the object.

    --Eric
     
  4. matias-e

    matias-e

    Joined:
    Sep 29, 2014
    Posts:
    106
    Thanks a lot for the tips and sorry for the late reply! I'll have to try both in a few days.