- Home /
Camera relative movement
Hello! i made a script that makes my character move relative to the camera, it works great, but i have a seriuos problem, when i try to make my character to look at the direction he's moving my character moves completly different.
This is the script.
 #pragma strict
 
 
 var dir: Vector3;
 var direction: Vector3;
 
 
 
 
 var speed : float = 2.0;
 var gravity : float = 30.0;
 
 
 
 
 var vertical :Vector3;
 var horizontal:Vector3;
 
 var total: Vector3;
 
 private var moveDirection : Vector3 = Vector3.zero;
 
 function Start () {
 
 }
 
 
 function Update () {
 var cam : Transform = Camera.main.transform;
 
 var controller : CharacterController = GetComponent(CharacterController);
 
 var cameraRight : Vector3 = cam.TransformDirection (1, 0, 0);
 var cameraFord : Vector3=cam.TransformDirection(0,0,1);
 
 vertical = cameraFord* Input.GetAxis("vertical");
 horizontal = cameraRight* Input.GetAxis("horizontal");
 
 if(Input.GetAxis("vertical")!=0 || Input.GetAxis("vertical")!=0)
 {animation.Play("walk");}
 
 total = vertical + horizontal;
 
 
 moveDirection = total*0.5;                        
             moveDirection = transform.TransformDirection(moveDirection);
             moveDirection *= speed;
           
 //transform.Translate(total*Time.deltaTime,Space.World);          
             
 
 transform.localRotation = Quaternion.LookRotation(total);                      
 
 
 moveDirection.y -= gravity * Time.deltaTime*5;
 
 controller.Move(moveDirection * Time.deltaTime);
 
 
 }
And the line transform.Translate moves my character exactly as i want, even if the character rotates, and i asume it's because it moves the character in world coordinates thanks to Space.World, but i can't use that line since i does not work with the character controller or rigid body and the character wont collide.
And when i use transform.TransformDirection the movement is affected by the rotation,
So the question is, how can i make my character move as transform.Translate in world coordinates but using the character controller so it can collide?
or how can i make that transform.TransformDirection is not affected by the rotation of the character?
Please, any help would be appreciated.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                