- Home /
 
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?
Answer by Default117 · Nov 15, 2011 at 06:35 AM
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.
thanks Dewald117, it worked!
for anybody that wants, I can post the script, but its too long - won't let me post i tin this comment space. 
Your answer