I’m using the following camera script:
var toolbarInt = 0;
var toolbarStrings : String[] = ["Select","Rotate", "Zoom", "Pan"];
function OnGUI () {
toolbarInt = GUI.Toolbar (Rect (20, 165, 180, 30), toolbarInt, toolbarStrings);
}
var target : Transform;
var distance = 10.0;
var xSpeed = 250.0;
var ySpeed = 120.0;
var yMinLimit = -20;
var yMaxLimit = 80;
var zoomRate = 2;
private var x = 0.0;
private var y = 0.0;
@script AddComponentMenu("Camera-Control/Mouse Orbit")
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
if (rigidbody)
rigidbody.freezeRotation = true;
}
var mover : Transform;
function LateUpdate () {
if (toolbarStrings[toolbarInt] == "Select") {return;}
if (toolbarStrings[toolbarInt] == "Rotate") {
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
}
if (toolbarStrings[toolbarInt] == "Zoom") {
distance += -Input.GetAxis("Mouse ScrollWheel") * zoomRate * Mathf.Abs(distance);
y = ClampAngle(y, yMinLimit, yMaxLimit);
}
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
if (toolbarStrings[toolbarInt] == "Pan")
transform.rotation = rotation;
transform.position = position + mover.position;
}
static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
along with this script attached to my Game Object:
var moveSpeed : float = 1;
var cam : Transform;
function Update () {
if (Input.GetMouseButton(1)) {
transform.rotation = cam.rotation;
transform.Translate(Vector3.right * -Input.GetAxis("Mouse X") * moveSpeed);
transform.Translate(transform.up * -Input.GetAxis("Mouse Y") * moveSpeed, Space.World);
}
}
but can’t get the rotation (orbit) to work right. The camera won’t rotate around the object, rather seems to pan (which I’ve reserved for the Pan GUI button).
Any ideas on what I’ve left out here?
Thanks.