Si giro mi reproductor en el eje Y y lo muevo como
transform.Translate(Vector3.forward * Time.deltaTime) se moverá a lo largo del eje Z del carácter (como se esperaba). Si usé CharacterController.Move, siempre se moverá en la misma dirección, independientemente de su rotación.
¿Cómo puedo hacer que el jugador siga su rotación?
El problema es que estás traduciendo el carácter hacia adelante a nivel global. Esto significa que adelante siempre estará en la misma dirección. En su lugar, usa transform.forward . De esa manera, está traduciendo el reproductor en el vector de avance del reproductor.
Otra forma de hacerlo es usando transform.rotation * Vector3.forward . Esto rotará el avance global por la rotación del jugador, devolviendo lo mismo que transform.forward .