- 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
![](https://koobas.hobune.stream/wayback/20220613133152im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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