Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var target : Transform;
- var distance = 10.0;
- var minDistance = 1;
- var maxDistance = 10;
- var height = 5.0;
- var heightDamping = 2.0;
- var rotationDamping = 3.0;
- var wallMask: LayerMask;
- private var defaultPos : Vector3;
- @script AddComponentMenu("Camera-Control/Smooth Follow")
- function Start (){
- if(target==null)
- target = GameObject.FindWithTag("Player").transform;
- }
- function LateUpdate ()
- {
- if (!target)
- return;
- var wantedRotationAngle = target.eulerAngles.y;
- var wantedHeight = target.position.y + height;
- var currentRotationAngle = transform.eulerAngles.y;
- var currentHeight = transform.position.y;
- currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
- currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
- var currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
- // transform.position = target.position;
- //transform.position -= currentRotation * Vector3.forward * distance;
- //transform.position.y = currentHeight;
- defaultPos = target.position;
- defaultPos -= currentRotation * Vector3.forward * distance;
- defaultPos.y = currentHeight;
- var hit : RaycastHit;
- if(Physics.Linecast(target.position,transform.position, hit,wallMask))
- {
- Debug.Log("hitWall");
- Debug.DrawLine(transform.position, target.position, Color.cyan);
- distance = Mathf.Clamp(hit.distance, minDistance, maxDistance);
- }
- transform.position = defaultPos;
- transform.LookAt (target);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement