Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class CameraController : MonoBehaviour
- {
- public float CameraOffset;
- public float CameraSpeed;
- public float ZoomSpeed;
- public float TargetCameraZoom;
- public Camera Camera;
- public float MinZoom;
- public float MaxZoom;
- private Flock Flock;
- private Vector3 Target;
- private float CurrentCameraZoom;
- private float FlockSize01;
- private float Transition = 0.0f;
- public float AnimationDuration;
- public float AnimationSpeed;
- private void Start()
- {
- Flock = GameObject.FindGameObjectWithTag("Flock").GetComponent<Flock>();
- SetMinCameraZoom(4);
- CameraOffset = GameController.instance.CameraOffset;
- MinZoom = GameController.instance.CameraMinZoom;
- MaxZoom = GameController.instance.CameraMaxZoom;
- CurrentCameraZoom = GameController.instance.CameraMinZoom;
- }
- private void Update()
- {
- //Target = Flock.transform.position + Vector3.forward * CameraOffset;
- if(Transition > 1.0f)
- {
- MoveCamera(ZoomSpeed, 12, 1);
- }
- else // Animation at the start of the game
- {
- MoveCamera(AnimationSpeed, 5, 1);
- Transition += Time.deltaTime * 1 / AnimationDuration;
- }
- }
- private void MoveCamera(float zoomSpeed, int minZoom, float cameraOffset)
- {
- SetMinCameraZoom(minZoom);
- Target = Flock.GetCenterOfMass() + Vector3.forward * CameraOffset;
- Target.y = 0;
- transform.position = Vector3.Lerp(transform.position, Target, Time.deltaTime * CameraSpeed);
- FlockSize01 = Mathf.InverseLerp(1, 50, Flock.GetCountOfPlayers());
- TargetCameraZoom = Mathf.Lerp(MinZoom, MaxZoom, FlockSize01);
- CurrentCameraZoom += (TargetCameraZoom - CurrentCameraZoom) * zoomSpeed * Time.deltaTime;
- Vector3 cameraDirection = -Camera.transform.forward;
- Camera.transform.localPosition = cameraDirection * CurrentCameraZoom;
- }
- public void RotateCameraByDegrees(float cameraAngleX)
- {
- Camera.transform.RotateAround(Target, Vector3.right, cameraAngleX - Camera.transform.rotation.eulerAngles.x);
- GameController.instance.CameraAngle = Camera.transform.rotation.eulerAngles.x;
- }
- public void SetCameraOffset(float offset)
- {
- CameraOffset = offset;
- GameController.instance.CameraOffset = CameraOffset;
- }
- public void SetMinCameraZoom(float cameraZoom)
- {
- MinZoom = cameraZoom;
- GameController.instance.CameraMinZoom = MinZoom;
- }
- public void SetMaxCameraZoom(float cameraZoom)
- {
- MaxZoom = cameraZoom;
- GameController.instance.CameraMaxZoom = MaxZoom;
- }
- void OnDrawGizmos()
- {
- //Gizmos.color = Color.red;
- //Gizmos.DrawSphere(Target, 0.2f);
- //Gizmos.color = Color.blue;
- //Gizmos.DrawSphere(transform.position, 0.2f);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement