isTrigger causing object to be non-rigid?

I have a ball that drops from the sky. I have a cube that sits still (rigidbody, no gravity or kinematic) I have that cube collider isTrigger=true. When the ball falls and hits the cube, I have a script that turns the gravity back on. But the ball goes right through the cube. So what I did is this (below code). It works, just wondering if there is a better way? Basically, why does IsTrigger, make the object not have a rigidbody and allow objects to pass through it?

 void OnTriggerEnter(Collider otherObject)
        otherObject.rigidbody.useGravity = true;
        otherObject.collider.isTrigger = false;
        Debug.Log("Gravity Enabled " + otherObject.ToString());

When a collider is not a trigger it’s used for collision detection, for instance when falling it won’t fall through something. When it is a trigger however, it is used for triggering instead. If you want both collision and triggering you can either switch it off, like you did, or give the gameObject an empty gameObject as child, and give this empty gameObject a collider as well.

Is trigger is a way for you to send messages when a rigidbody reaches a point in space but you do not want it to physically react to the object.


A finish line at the end of a race would be a trigger, you dont want the cars to run into a wall but you want them to send a message when they get there, so you put a invisible box, give it a collider and turn it to a trigger.