How can I move a character to a point in a straight line with CharacterController.Move while rotating him?

Hello, I got a problem that is disturbing me.

I start by rotating my character to look at my destination point (which is more or less at the same height):

m_target.transform.LookAt(m_path[0]);
m_target.transform.eulerAngles = new Vector3 (0f, m_target.transform.eulerAngles.y, 0f);

Then I try to move him by using his character controller:

Vector3 v = transform.TransformDirection((m_path[0] - m_target.transform.position) / distance) * m_target.GetComponent<Character>().m_speed * Time.deltaTime;
v.y -= 9.8f * Time.deltaTime;
m_target.GetComponent<CharacterController>().Move(v);

And finally, my character starts moving… in circles, always trying to attain the desired position with an Y angle of 0.

However, whenever I don’t rotate him, he moves just fine (but never faces his destination point…). What could be wrong with the way I rotate/move him? Thanks for your answers!

I got my answer after searching a little more.

SimpleMove and Move both expect a global direction, not local. The difference between them is that SimpleMove expects the velocity vector, while Move wants the displacement

Source: Charactercontroller.move affecting rotation - Questions & Answers - Unity Discussions

(In the end I deleted the transform.TransformDirection()):

	Vector3 v = (m_path[0] - m_target.transform.position) / d * m_target.GetComponent<Character>().m_speed * Time.deltaTime;
	v.y -= 9.8f * Time.deltaTime;
	m_target.GetComponent<CharacterController>().Move(v);

Consider using transform.translate, that should fix it, as transform.transformDirection moves on this direction PLUS the start rotation. However, just try it:)