need help translating camera control script from C# to javascript

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?

The way you have been declaring your variables is incorrect for starters. For instance you’re stating
var target = Transform;
where the convention is

  1. var
  2. your variable name
  3. :
  4. the type
  5. =
  6. it’s initialised data.
    So try doing things like var target : Transform; and var xSpeed : float = 200.0f; instead.