- Home /
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!
Answer by Sought · Dec 15, 2014 at 08:17 PM
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: http://answers.unity3d.com/questions/477514/charactercontrollermove-affecting-rotation.html
(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);
Answer by Seneral · Dec 15, 2014 at 07:53 PM
Consider using transform.translate, that should fix it, as transform.transformDirection moves on this direction PLUS the start rotation. However, just try it:)
Yeah, I didn't understand that point until I found a solution. Thanks for your answer I'll keep it in $$anonymous$$d.
Your answer
Follow this Question
Related Questions
Rotate character to the moving direction problems? 2 Answers
Character Controller - unknown rotation, flying 1 Answer
Character Controller slides sideways when it hits objects are angles different from 90 degrees 1 Answer
How do I get GameObjects to look at me? 2 Answers
CharacterController.move doesn't seem to move me horizontally 0 Answers