in-Game camera movement like editor

Hi, I was wondering. I want an in-game camera view/movement like in the editor and my question is if someone has an example or can give me some help. Because I have no idea how to make it.

Thanks in advance! :slight_smile:

This is what i btw have, but the camera is rotating around its own axis… And I want it like in the editor, that It rotates around the mouse Axis and zooms in at the mouse position

using UnityEngine;
using System.Collections;

public class cameraRot : MonoBehaviour {

	Vector3 startPos;
	Quaternion startRot;

	void Awake ()    {
		startPos = new Vector3 (this.transform.position.x, this.transform.position.y, this.transform.position.z);
		startRot = new Quaternion (this.transform.rotation.x, this.transform.rotation.y, this.transform.rotation.z, this.transform.rotation.w);
	}

	void Update ()    {
		CameraZoom ();	
		rotateObject ();
		resetPosition ();
	} 

	void resetPosition(){
		if(Input.GetKey(KeyCode.R)){
		this.transform.position = startPos;
		this.transform.rotation = startRot;
		}

	}

	void CameraZoom(){

		float mouseScrollValue = Input.GetAxis ("Mouse ScrollWheel") * 100f;
		float mouseScroll = Mathf.Clamp((int)mouseScrollValue, -10 ,20); 


		float mouseX = Input.mousePosition.x / 5;
		float mouseY = transform.position.y;
		float mouseZ = Input.mousePosition.y / 5;
		Vector3 thePos = new Vector3(mouseX,mouseY,mouseZ);




		if(Input.GetKey(KeyCode.Z)){ //Set Camera/Mouse Position to active
			transform.position = thePos; 
			Camera.main.transform.position -= new Vector3 (0f, mouseScroll, 0f);


		}
	}

	void rotateObject(){
		float moveAxisX = Input.GetAxis ("Mouse X");
		float moveAxisY = Input.GetAxis ("Mouse Y");

		 if (Input.GetKey (KeyCode.X)) {
			//nogood
			Camera.main.transform.Rotate(-moveAxisY,moveAxisX,0f);

		}
	}
}

http://wiki.unity3d.com/index.php?title=MouseOrbitZoom

This is pretty close, give it ago! :slight_smile:

works for me

public class CameraMovement : MonoBehaviour {
    
        public float lookSpeedH = 2f;
        public float lookSpeedV = 2f;
        public float zoomSpeed = 2f;
        public float dragSpeed = 6f;
    
        private float yaw = 0f;
        private float pitch = 0f;
    	
    	void Update ()
        {
            //Look around with Right Mouse
            if (Input.GetMouseButton(1))
            {
                yaw += lookSpeedH * Input.GetAxis("Mouse X");
                pitch -= lookSpeedV * Input.GetAxis("Mouse Y");
    
                transform.eulerAngles = new Vector3(pitch, yaw, 0f);
            }
    
            //drag camera around with Middle Mouse
            if (Input.GetMouseButton(2))
            {
                transform.Translate(-Input.GetAxisRaw("Mouse X") * Time.deltaTime * dragSpeed,   -Input.GetAxisRaw("Mouse Y") * Time.deltaTime * dragSpeed, 0);
            }
    
            //Zoom in and out with Mouse Wheel
            transform.Translate(0, 0, Input.GetAxis("Mouse ScrollWheel") * zoomSpeed, Space.Self);
        }
    }

some changes to work like Unity scene editor:

using UnityEngine;

    public class CameraMovement : MonoBehaviour
    {
        [SerializeField]
        private float lookSpeedH = 2f;
        
        [SerializeField]
        private float lookSpeedV = 2f;

        [SerializeField]
        private float zoomSpeed = 2f;

        [SerializeField]
        private float dragSpeed = 3f;

        private float yaw = 0f;
        private float pitch = 0f;

        private void Start()
        {
            // Initialize the correct initial rotation
            this.yaw = this.transform.eulerAngles.y;
            this.pitch = this.transform.eulerAngles.x;
        }

        private void Update()
        {
            // Only work with the Left Alt pressed
            if (Input.GetKey(KeyCode.LeftAlt))
            {
                //Look around with Left Mouse
                if (Input.GetMouseButton(0))
                {
                    this.yaw += this.lookSpeedH * Input.GetAxis("Mouse X");
                    this.pitch -= this.lookSpeedV * Input.GetAxis("Mouse Y");

                    this.transform.eulerAngles = new Vector3(this.pitch, this.yaw, 0f);
                }

                //drag camera around with Middle Mouse
                if (Input.GetMouseButton(2))
                {
                    transform.Translate(-Input.GetAxisRaw("Mouse X") * Time.deltaTime * dragSpeed, -Input.GetAxisRaw("Mouse Y") * Time.deltaTime * dragSpeed, 0);
                }

                if (Input.GetMouseButton(1))
                {
                    //Zoom in and out with Right Mouse
                    this.transform.Translate(0, 0, Input.GetAxisRaw("Mouse X") * this.zoomSpeed * .07f, Space.Self);
                }

                //Zoom in and out with Mouse Wheel
                this.transform.Translate(0, 0, Input.GetAxis("Mouse ScrollWheel") * this.zoomSpeed, Space.Self);
            }
        }
    }