Cant figure out simple camera orbit
I've been at this for hours so far, all I'm trying to do is have a simple script, the user clicks and drags the mouse, the camera rotates around a collection of objects. If the mouse is moved up, the camera orbits upward, mouse moves right, camera orbits right. If the user moves the mouse wheel forward or backward, the camera zooms accordingly.
It should be pretty simple, but I've gotten nowhere, I found a script that claims to do that but in reality it rotates in local coordinates so if the user moves right and left there's no telling which direction it'll really orbit because it all depends on where the local "up" is.
I've been searching Google for the last 3 hours pulling up dozens of pages, tabs, videos, examples, documentation and have finally admitted defeat. Any help would be greatly appreciated. This is what I've come up with so far after dozens of failed attempts.
using UnityEngine;
using System.Collections;
public class OrbitControls2 : MonoBehaviour
{
public Transform target;
public float xSpeed = 120.0f;
public float ySpeed = 120.0f;
public float distanceMin = .5f;
public float distanceMax = 15f;
private float x;
private float y;
private float z;
// Use this for initialization
void Start ()
{
x = transform.position.x;
y = transform.position.y;
z = transform.position.z;
}
// Update is called once per frame
void LateUpdate ()
{
if(Input.GetMouseButton(0))
{
x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
}
z += Input.GetAxis("Mouse ScrollWheel") * 5;
transform.position = new Vector3(x, y, z);
transform.LookAt (new Vector3(0, 0, 0));
}
}
Your answer
Follow this Question
Related Questions
How to limit/Clamp RotateAround for camera movement? 0 Answers
,Know if the mouse position has changed 0 Answers
Move a object around another object 0 Answers
Touch Camera Movement and Transform Player on Touch 0 Answers
how to Rotate Camera around GameObject with mouse, where up is always up? 0 Answers