Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- [AddComponentMenu("Camera/Camera Zoom")]
- public class CameraZoom : MonoBehaviour {
- public LayerMask layersToCollide;
- public float smooth = 18;
- private Transform cameraPivot;
- private CameraFollow cameraFollow;
- private RaycastHit hit;
- private Vector3 defaultPos;
- private float startDistance;
- void Start () {
- cameraFollow = GetComponent <CameraFollow> ();
- cameraPivot = GameObject.Find ("CameraPivot").transform;
- defaultPos = new Vector3 (0, cameraFollow.height, - cameraFollow.distance);
- startDistance = cameraFollow.distance;
- }
- void LateUpdate () {
- //Draw line on editor screen
- Debug.DrawLine (cameraPivot.position, cameraPivot.TransformPoint(defaultPos), Color.black);
- //Create bool true if there something between player and camera
- bool isColliding = Physics.Linecast (cameraPivot.position,
- cameraPivot.TransformPoint (defaultPos),
- out hit,
- layersToCollide);
- //Change camera distance if there's something between player and camera
- if (isColliding && hit.distance < startDistance)
- cameraFollow.distance = Mathf.MoveTowards (cameraFollow.distance,
- hit.distance,
- smooth * Time.deltaTime);
- else
- cameraFollow.distance = Mathf.MoveTowards (cameraFollow.distance,
- startDistance,
- smooth * Time.deltaTime);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement