# Ways to move a character in Unity

I am studying Unity, and so far I encountered three different ways to move a character. As far as I understand:

• Directly changing the transform - ignores both physics and colliders;
• Using a CharacterController component - ignores physics but considers colliders;
• Using a RigidBody component - considers both physics and colliders.

Are these descriptions correct? Which one should I use?

• "List some famous games" is NOT a good way to decide what's right for your game, and is not on-topic here. What kind of game are you making, how have you tried applying these solutions to it so far, and how do the results differ from what you need for your game? – DMGregory Apr 22 at 14:47

• Changing rigidbody.position which is not much different from changing transform.position
• Changing rigidbody.velocity
• Using the rigidbody.MovePosition method
• Using the rigidbody.AddForce method