To be explicit, the controls are: WASD to move forwards, left, backwards and right. Lock the mouse in the centre, and as the mouse moves, rotate the camera in the direction of the mouse movement. To deal with the mouse movement: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController3D : MonoBehaviour { public float speedH = 2.0f; public float speedV = 2.0f; private float yaw = 0.0f; private float pitch = 0.0f; CursorLockMode wantedMode; void Update () { if (wantedMode == CursorLockMode.Locked) { yaw += speedH * Input.GetAxis("Mouse X"); pitch -= speedV * Input.GetAxis("Mouse Y"); transform.eulerAngles = new Vector3(pitch, yaw, 0.0f); } if (Input.GetMouseButtonDown(0)) { wantedMode = CursorLockMode.Locked; SetCursorState(); } if (Input.GetKeyDown(KeyCode.Escape)) { Debug.Log("escaping"); Cursor.lockState = wantedMode = CursorLockMode.None; SetCursorState(); } } }