How to properly move a rigidbody/collider?

Hello everyone,

I wanted to ask what is the best way to move a rigidbody with a collider? I have many problems using AddForce or MovePosition so I would like to just use Translate for all the movement. I heard that this is bad for the collision detection and performance but I also heard that it doesn't matter. I would really like a reply because if it's indeed bad to use Translate, then I would have to rewrite everything.

Thanks

`rigidbody.velocity` is how we moved our rigidbodies

//Set moveDirection to the vertical axis (up and down keys) * speed
            moveDirection = Vector3(MoveSpeed*Input.GetAxis("Horizontal"),-Gravity,MoveSpeed*Input.GetAxis("Vertical"));
            //Transform the vector3 to local space
            moveDirection = transform.TransformDirection(moveDirection);
            //set the velocity, so you can move
            transform.rigidbody.velocity.x = moveDirection.x;
            transform.rigidbody.velocity.z = moveDirection.z;
            rigidbody.AddForce (Vector3.up * -10);

if you're using a CharacterController then Move() works well. Otherwise you can use Translate but you'll have to handle collisions yourself meaning it won't stop you from moving the object through other objects unless you implement that code yourself.