This is a script I found on Reddit. Just attach the script to the camera you want to move and control the camera with the WASD keyboard keys.

// Save this to a file name CameraCtonroller.cs and attach it to a camera.


using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour
{
	public float cameraSensitivity = 90;
	public float normalMoveSpeed = 10;
	public float slowMoveFactor = 0.25f;
	public float fastMoveFactor = 3;

	private float rotationX = 0.0f;
	private float rotationY = 0.0f;

	void Start()
	{
		//When we lock the cursor it becomes invisible too.
		Cursor.lockState = CursorLockMode.Locked;
	}

	void Update()
	{
		rotationX += Input.GetAxis("Mouse X") * cameraSensitivity * Time.deltaTime;
		if (rotationX > 360)
			rotationX -= 360;
		if (rotationX < -360)
			rotationX += 360;

		rotationY += Input.GetAxis("Mouse Y") * cameraSensitivity * Time.deltaTime;
		rotationY = Mathf.Clamp(rotationY, -90, 90);

		transform.localRotation = Quaternion.AngleAxis(rotationX, Vector3.up);
		transform.localRotation *= Quaternion.AngleAxis(rotationY, Vector3.left);

		if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
		{
			transform.position += transform.forward * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime;
			transform.position += transform.right * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime;
		}
		else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
		{
			transform.position += transform.forward * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime;
			transform.position += transform.right * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime;
		}
		else
		{
			transform.position += transform.forward * normalMoveSpeed * Input.GetAxis("Vertical") * Time.deltaTime;
			transform.position += transform.right * normalMoveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime;
		}

		if (Input.GetKey(KeyCode.Q))
			transform.position += transform.up * normalMoveSpeed * Time.deltaTime;

		if (Input.GetKey(KeyCode.E))
			transform.position -= transform.up * normalMoveSpeed * Time.deltaTime;
	}

}

 

Tagged on:             

One thought on “Unity Script: Camera Move

  • February 17, 2016 at 4:57 pm
    Permalink

    This is actually something I was looking for! I’m trying to make a 3D environment for a drawing class assignment but it was surprisingly difficult to figure out how to search for this specific camera navigation.

Leave a Reply