MouseOrbit.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. var target : Transform;
  2. var distance = 10.0;
  3. var xSpeed = 250.0;
  4. var ySpeed = 120.0;
  5. var yMinLimit = -20;
  6. var yMaxLimit = 80;
  7. private var x = 0.0;
  8. private var y = 0.0;
  9. @script AddComponentMenu("Camera-Control/Mouse Orbit")
  10. function Start () {
  11. var angles = transform.eulerAngles;
  12. x = angles.y;
  13. y = angles.x;
  14. // Make the rigid body not change rotation
  15. //rigidbody.freezeRotation = true;
  16. }
  17. function LateUpdate () {
  18. if (target) {
  19. x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
  20. y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
  21. y = ClampAngle(y, yMinLimit, yMaxLimit);
  22. var rotation = Quaternion.Euler(y, x, 0);
  23. var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
  24. transform.rotation = rotation;
  25. transform.position = position;
  26. distance = Mathf.Clamp(distance - Input.GetAxis("Mouse ScrollWheel")*5, 10,90);
  27. }
  28. }
  29. static function ClampAngle (angle : float, min : float, max : float) {
  30. if (angle < -360)
  31. angle += 360;
  32. if (angle > 360)
  33. angle -= 360;
  34. return Mathf.Clamp (angle, min, max);
  35. }