When you use the rigidbody to effect movement, you are essentially moving the object - player in this case - using physics. The physics engine will apply your changes as part of the physics tick and whatever you sent will be affected by the physics.
When you move using the transform, physics is ignored for that movement.
For example; Let’s say your player is facing a wall and is 1 unit away from it. If you use
transform.Translate and move the player 1.5 units forward, the objects will move into the wall before the physics will push it out again - provided all the colliders and rigidbodies are set up and in place. If you use the
rigidbody.velocity to make the player move 1.5 units forward, it will only move unitl it hits the wall and no further because the physics will prevent it from going into the wall in the first place.
It all depends on the game you are making, and what you are trying to achieve. In other courses we move the player using
NavMeshAgent.SetDestination(). These are all ways to move your player that cater for the game we are making. We use
CharacterController in the third-person traversal because it has built-in ground checks and colliders, etc., and we use the
NavMeshAgent in the RPG series because it’s a ‘point-and-click’ type game where we click somewhere and the
NavMeshAgent will pathfind across the nav mesh we created from where it is to where we clicked (or as close to it as it can).
I think it’s beneficial to learn as many ways as you can to help decide which method would be best for your game.