Advertisement
Muk99

CameraZoom

Jan 9th, 2015
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.61 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. [AddComponentMenu("Camera/Camera Zoom")]
  5.  
  6. public class CameraZoom : MonoBehaviour {
  7.  
  8.     public LayerMask layersToCollide;
  9.     public float smooth = 18;
  10.  
  11.     private Transform cameraPivot;
  12.     private CameraFollow cameraFollow;
  13.     private RaycastHit hit;
  14.     private Vector3 defaultPos;
  15.     private float startDistance;
  16.  
  17.     void Start () {
  18.         cameraFollow = GetComponent <CameraFollow> ();
  19.         cameraPivot = GameObject.Find ("CameraPivot").transform;
  20.  
  21.         defaultPos = new Vector3 (0, cameraFollow.height, - cameraFollow.distance);
  22.  
  23.         startDistance = cameraFollow.distance;
  24.     }
  25.    
  26.     void LateUpdate () {
  27.         //Draw line on editor screen
  28.         Debug.DrawLine (cameraPivot.position, cameraPivot.TransformPoint(defaultPos), Color.black);
  29.  
  30.         //Create bool true if there something between player and camera
  31.         bool isColliding = Physics.Linecast (cameraPivot.position,
  32.                                              cameraPivot.TransformPoint (defaultPos),
  33.                                              out hit,
  34.                                              layersToCollide);
  35.  
  36.         //Change camera distance if there's something between player and camera
  37.         if (isColliding && hit.distance < startDistance)
  38.             cameraFollow.distance = Mathf.MoveTowards (cameraFollow.distance,
  39.                                                        hit.distance,
  40.                                                        smooth * Time.deltaTime);
  41.         else
  42.             cameraFollow.distance = Mathf.MoveTowards (cameraFollow.distance,
  43.                                                        startDistance,
  44.                                                        smooth * Time.deltaTime);
  45.  
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement