- Home /
Why does Unity disable the Collider when I Destroy the Rigidbody? (2D)
In my project I am composing objects when they collide. Objects A and B both contain a Rigidbody2D and a BoxCollider2D If object A collects object B (say on a collision) B's transform.parent is pointed to A.transform and A Destroys B's Rigidbody2D.
//Inside a collision handling function in Object A
B.transform.parent = this.transform;
Destroy (B.rigidbody2D);
However, this disables B's Boxcollider2D. (However this change is not shown in the Inspector, and can only be observed in Game or by printing the value of:
B.collider2D.enabled
Worse, a call to
B.collider2D.enabled=true;
has no effect.
Anyone know how to fix this?
Answer by davient · Feb 11, 2014 at 07:43 AM
So I fiddled around with this and found that the B.collider2D.enabled=true;
can be forced to work by adding by setting to false, waiting, and then setting to true. So I fiddled around with the wait length and it turns out that a single frame is long enough so I run the changes in a coroutine StartCoroutine ("ColliderFix", B);
Workaround:
IEnumerator ColliderFix (GameObject obj)
{
// We need to wait momentarily after disabling or the fix will not work
obj.collider2D.enabled = false;
yield return 0;// new WaitForSeconds (2);
obj.collider2D.enabled = true;
}
This appears to be a bug and has been filed as Bug 588885.
Unity QA have replied to confirm the bug. And later that this is now fixed in the next release.
Your answer
Follow this Question
Related Questions
Disable Collider After two Second of Being Triggered and enable it again 3 Answers
How do I disable all rigidbodies and colliders in a scene in unity? 2 Answers
How to Disable/Enable another Script with Triggers? 1 Answer
Collider enabled when child object is destroyed 0 Answers
How to disable hitted collider?[fixed] 2 Answers