- Home /
Question by
IsoChronic · May 28, 2014 at 11:10 PM ·
cameramovementlocalworldfirst person
How to move the character relative to the camera?
I use the camera's angles to base my movement off of. I then multiply the inputs by the camera's vectors to produce movement in the camera's direction. This works if I use transform.Translate(motion*Time.deltaTime), but controller.Move() does not seem to work with or without transform.TransformDirection(motion). Am I screwing up world versus local somewhere here? Translate works fine but the move function goes at off angles.
start(){
controller = GetComponent < CharacterController> ();
cameraAim = GameObject.FindGameObjectWithTag("MainCamera").transform;
}
update(){
Vector3 input = new Vector3 (Input.GetAxisRaw ("Horizontal"), 0, Input.GetAxisRaw ("Vertical"));
Vector3 forward = new Vector3(cameraAim.forward.x, 0, cameraAim.forward.z);
Vector3 right = new Vector3(cameraAim.right.x, 0, cameraAim.right.z);
Vector3 motion = forward*motion.z + right * motion.x;
motion = transform.TransformDirection(motion);
controller.Move (motion * Time.deltaTime);
}
Comment
Your answer
Follow this Question
Related Questions
"Ballance" Type ball game Problem. 0 Answers
Move camera when mouse is on the edge? 1 Answer
How do I center a child object of camera on other object's screen position? 2 Answers
World and Local Axis out of Alignment 1 Answer
Camera Relative Movement 2 Answers