Advertisement
AndrewRosyaev

SmoothFollowCollisionCamera

Jul 26th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var target : Transform;
  2. var distance = 10.0;
  3. var minDistance = 1;
  4. var maxDistance = 10;
  5. var height = 5.0;
  6. var heightDamping = 2.0;
  7. var rotationDamping = 3.0;
  8. var wallMask: LayerMask;
  9. private var defaultPos : Vector3;
  10. @script AddComponentMenu("Camera-Control/Smooth Follow")
  11. function Start (){
  12. if(target==null)
  13.  target = GameObject.FindWithTag("Player").transform;
  14. }
  15.  
  16. function LateUpdate ()
  17. {
  18.     if (!target)
  19.         return;
  20.     var wantedRotationAngle = target.eulerAngles.y;
  21.     var wantedHeight = target.position.y + height;
  22.     var currentRotationAngle = transform.eulerAngles.y;
  23.     var currentHeight = transform.position.y;
  24.     currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
  25.     currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
  26.     var currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
  27.    // transform.position = target.position;
  28.     //transform.position -= currentRotation * Vector3.forward * distance;
  29.     //transform.position.y = currentHeight;
  30.     defaultPos = target.position;
  31.     defaultPos -= currentRotation * Vector3.forward * distance;
  32.     defaultPos.y = currentHeight;
  33.     var hit : RaycastHit;
  34.     if(Physics.Linecast(target.position,transform.position, hit,wallMask))
  35.     {
  36.         Debug.Log("hitWall");
  37.         Debug.DrawLine(transform.position, target.position, Color.cyan);
  38.         distance = Mathf.Clamp(hit.distance, minDistance, maxDistance);
  39.     }
  40.     transform.position = defaultPos;
  41.     transform.LookAt (target);
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement