- Home /
 
 
               Question by 
               unity_w8Ut9sYUwJx21g · Oct 17, 2019 at 07:36 PM · 
                camerarotationmovementbeginnerbegginer  
              
 
              Moving character relative to camera position.
So i have a cube that currently moves towards where I go using the wasd but it isn't moving forward relative to the camera position, it just moves towards the Z axis. this is my code:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PlayerController : MonoBehaviour
 {
     [SerializeField]
     private float _speed;
     [RangeAttribute(0, 1),SerializeField]
     private float _rotationSmooth;
     private Rigidbody _rigidbody;
     
     private Vector3 _forward;
 
     // Start is called before the first frame update
     void Start()
     {
         
         _forward = Camera.main.transform.forward;
         _forward.y = 0;
         _forward = Vector3.Normalize(_forward);
         
 
         _rigidbody = gameObject.GetComponent<Rigidbody>();
     }
 
     // Update is called once per frame
     void Update()
     {
         //get input from player
         
         float horizontalInput = Input.GetAxisRaw("Horizontal");
         float verticalInput = Input.GetAxisRaw("Vertical");
 
         // target direction
         Vector3 direction = new Vector3(horizontalInput, 0, verticalInput);
 
         if (direction.magnitude != 0)
         {
             //get rotation direction
             Quaternion targetDir = Quaternion.LookRotation(direction) ;
 
             //smoothly rotate towards target rotation
             transform.rotation = Quaternion.Lerp(transform.rotation, targetDir, _rotationSmooth);
 
             
 
         }
         // move player
         
         direction = direction.normalized * _speed * Time.deltaTime * direction.magnitude;
         _rigidbody.MovePosition(transform.position + direction);
         
     }
 }
 
               How do i make it move relative to the cameras position in my case?
               Comment
              
 
               
              It's not very clear what is happening and what should happen.
So my main issue is that when i press w, for example, the cube moves towards the worlds z position and not relative to the cameras position.
Answer by suIly · Oct 20, 2019 at 04:30 PM
             xMovement = Input.GetAxisRaw("Horizontal");
             zMovement = Input.GetAxisRaw("Vertical");
 
             movementHorizontal = playerCamera.transform.right * xMovement;
             movementVertical = playerCamera.transform.forward * zMovement;
             finishedMovement = (movementHorizontal + movementVertical).normalized * speedToMove;
 
               Try this :)
Your answer