Different collision results in some areas.

Hello, I’m trying to clone the Classic Asteroids but I’m getting problem with physics. When the player hits the asteroid, he just break up, pictures bellow:

Before crash: alt text

After a normal crash: alt text

After a problematic crash, the spacecraft just separate and it’s still being ‘dragged’ by the asteroid:
alt text

Video: Demo - YouTube

Player hierarchy, the “player_a”, “player_b” and “player_c” are player’s parts that will break up. I just unparent them when the asteroid collides:
alt text

Player rigidbody and collider:
alt text

When the asteroid collides with the player, this is called:

            this.transform.DetachChildren();//Unparent children
            Rigidbody2D rb_Asteroid = collision.gameObject.GetComponent<Rigidbody2D>();
            Vector2 Asteroid_Velocity = rb_Asteroid.velocity;
            float AV_Asteroid = rb_Asteroid.angularVelocity;

            Destroy(this.gameObject);//Destroy player gameobject

            //Get detached children
            GameObject _A = GameObject.Find("player_a");
            GameObject _B = GameObject.Find("player_b");
            GameObject _C = GameObject.Find("player_c");
            Rigidbody2D rb_A = _A.GetComponent<Rigidbody2D>();
            Rigidbody2D rb_B = _B.GetComponent<Rigidbody2D>();
            Rigidbody2D rb_C = _C.GetComponent<Rigidbody2D>();

            //Enable 'Simulate' rigidbody
            rb_A.simulated = rb_B.simulated = rb_C.simulated = true;

            //Change velocity
            rb_A.velocity = rb_B.velocity = rb_C.velocity = Asteroid_Velocity;
            rb_A.angularVelocity = rb_B.angularVelocity = rb_C.angularVelocity = AV_Asteroid;

I solved it by adding a box collider on the middle of the player. I think this is a workaround but it’s working fine:
alt text

alt text