Hi all,
So I found this MouseOrbitZoom script on the Unify Community Wiki site, and need help translating it into Javascript; here’s what I have so far:
var target = Transform;
var targetOffset = Vector3;
var distance = 5.0;
var currentDistance = float;
var desiredDistance = float;
var maxDistance = 20;
var minDistance = .6;
var xSpeed = 200.0;
var ySpeed = 200.0;
var yMinLimit = -80;
var yMaxLimit = 80;
var zoomRate = 40;
var panSpeed = 0.3;
var zoomDampening = 5.0;
var position = Vector3;
var rotation = Quaternion;
var currentRotation = Quaternion;
var desiredRotation = Quaternion;
var angles = transform.eulerAngles;
private var x = 0.0;
private var y = 0.0;
function Start () {
if (!target){
GameObject go = new GameObject("Cam Target");
go.transform.position = transform.position + (transform.forward * distance);
target = go.transform;
}
distance = Vector3.Distance(transform.position, target.position);
currentDistance = distance;
desiredDistance = distance;
position = transform.position;
rotation = transform.rotation;
currentRotation = transform.rotation;
desiredRotation = transform.rotation;
x = angles.y;
y = angles.x;
}
function LateUpdate (){
if (Input.GetMouseButton(2) && Input.GetKey(KeyCode.LeftAlt) && Input.GetKey(KeyCode.LeftControl)){
desiredDistance -= Input.GetAxis("Mouse Y") * Time.deltaTime * zoomRate*0.125f * Mathf.Abs(desiredDistance);
}
if (Input.GetMouseButton(2) && Input.GetKey(KeyCode.LeftAlt)){
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
y = ClampAngle(y, yMinLimit, yMaxLimit);
desiredRotation = Quaternion.Euler(y, x, 0);
currentRotation = transform.rotation;
rotation = Quaternion.Lerp(currentRotation, desiredRotation, Time.deltaTime * zoomDampening);
transform.rotation = rotation;
}
else if (Input.GetMouseButton(2)){
target.rotation = transform.rotation;
target.Translate(Vector3.right * -Input.GetAxis("Mouse X") * panSpeed);
target.Translate(transform.up * -Input.GetAxis("Mouse Y") * panSpeed, Space.World);
}
desiredDistance -= Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomRate * Mathf.Abs(desiredDistance);
desiredDistance = Mathf.Clamp(desiredDistance, minDistance, maxDistance);
currentDistance = Mathf.Lerp(currentDistance, desiredDistance, Time.deltaTime * zoomDampening);
position = target.position - (rotation * Vector3.forward * currentDistance + targetOffset);
transform.position = position;
}
static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);
}
but get an error message for the GameObject go = …blah line. If I change that line to read var go = new GameObject(“Cam Target”); I get a whole list of errors.
Any ideas?