Kinematic behaviour object but with gravity ???

I want to apply gravity to boxes, but rigidbody make them fly when they collision with player. So i want to apply gravity but not reaction to collisions.

If someone need a quickFix, that work for me ( PlayerManager.Instance.gameObject is the player gameObject):

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject == PlayerManager.Instance.gameObject)
        {
            GetComponent<Rigidbody>().isKinematic = true;
            GetComponent<Rigidbody>().useGravity = false;
            GetComponent<Rigidbody>().velocity = Vector3.zero;
            GetComponent<Rigidbody>().angularVelocity = Vector3.zero;
        }
            
        

    }


    private void OnCollisionExit(Collision collision)
    {
        if (collision.gameObject == PlayerManager.Instance.gameObject)
        {
            // switch to 'non-kinematic'
            GetComponent<Rigidbody>().isKinematic = false;
            GetComponent<Rigidbody>().useGravity = true;
            GetComponent<Rigidbody>().velocity = Vector3.zero; // or another initial value
        }

    }

STILL INTERESTED IN A BETTER SOLUTION