Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.03 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class CameraController : MonoBehaviour
  6. {    
  7.     public float CameraOffset;
  8.     public float CameraSpeed;
  9.     public float ZoomSpeed;
  10.     public float TargetCameraZoom;
  11.     public Camera Camera;
  12.     public float MinZoom;
  13.     public float MaxZoom;
  14.  
  15.     private Flock Flock;
  16.     private Vector3 Target;
  17.     private float CurrentCameraZoom;
  18.     private float FlockSize01;
  19.  
  20.     private float Transition = 0.0f;
  21.     public float AnimationDuration;
  22.     public float AnimationSpeed;
  23.  
  24.  
  25.     private void Start()
  26.     {
  27.         Flock = GameObject.FindGameObjectWithTag("Flock").GetComponent<Flock>();
  28.         SetMinCameraZoom(4);
  29.         CameraOffset = GameController.instance.CameraOffset;
  30.         MinZoom = GameController.instance.CameraMinZoom;
  31.         MaxZoom = GameController.instance.CameraMaxZoom;
  32.         CurrentCameraZoom = GameController.instance.CameraMinZoom;
  33.     }
  34.  
  35.     private void Update()
  36.     {
  37.         //Target = Flock.transform.position + Vector3.forward * CameraOffset;
  38.  
  39.         if(Transition > 1.0f)
  40.         {
  41.             MoveCamera(ZoomSpeed, 12, 1);
  42.         }
  43.         else // Animation at the start of the game
  44.         {
  45.             MoveCamera(AnimationSpeed, 5, 1);
  46.  
  47.             Transition += Time.deltaTime * 1 / AnimationDuration;
  48.         }
  49.     }
  50.  
  51.     private void MoveCamera(float zoomSpeed, int minZoom, float cameraOffset)
  52.     {
  53.         SetMinCameraZoom(minZoom);
  54.         Target = Flock.GetCenterOfMass() + Vector3.forward * CameraOffset;
  55.         Target.y = 0;
  56.         transform.position = Vector3.Lerp(transform.position, Target, Time.deltaTime * CameraSpeed);
  57.  
  58.         FlockSize01 = Mathf.InverseLerp(1, 50, Flock.GetCountOfPlayers());
  59.         TargetCameraZoom = Mathf.Lerp(MinZoom, MaxZoom, FlockSize01);
  60.         CurrentCameraZoom += (TargetCameraZoom - CurrentCameraZoom) * zoomSpeed * Time.deltaTime;
  61.         Vector3 cameraDirection = -Camera.transform.forward;
  62.         Camera.transform.localPosition = cameraDirection * CurrentCameraZoom;
  63.     }
  64.  
  65.     public void RotateCameraByDegrees(float cameraAngleX)
  66.     {        
  67.         Camera.transform.RotateAround(Target, Vector3.right, cameraAngleX - Camera.transform.rotation.eulerAngles.x);
  68.         GameController.instance.CameraAngle = Camera.transform.rotation.eulerAngles.x;
  69.     }
  70.  
  71.     public void SetCameraOffset(float offset)
  72.     {
  73.         CameraOffset = offset;
  74.         GameController.instance.CameraOffset = CameraOffset;
  75.     }
  76.  
  77.     public void SetMinCameraZoom(float cameraZoom)
  78.     {
  79.         MinZoom = cameraZoom;
  80.         GameController.instance.CameraMinZoom = MinZoom;
  81.     }
  82.  
  83.     public void SetMaxCameraZoom(float cameraZoom)
  84.     {
  85.         MaxZoom = cameraZoom;
  86.         GameController.instance.CameraMaxZoom = MaxZoom;
  87.     }
  88.  
  89.     void OnDrawGizmos()
  90.     {
  91.         //Gizmos.color = Color.red;
  92.         //Gizmos.DrawSphere(Target, 0.2f);
  93.  
  94.         //Gizmos.color = Color.blue;
  95.         //Gizmos.DrawSphere(transform.position, 0.2f);
  96.  
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement