using Cinemachine; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace UnityCommon { public class CinemachineState : CameraState { public CinemachineState(Camera camera) : base(camera) { } CinemachineBrain cinemachineBrain; CinemachineVirtualCamera virtualCamera; private float fov = 40; public override void Enter() { base.Enter(); m_camera.enabled = true; cinemachineBrain = m_camera.gameObject.AddComponentOnlyOne(); Utility.DelayExe(2, () => { virtualCamera = cinemachineBrain.ActiveVirtualCamera.VirtualCameraGameObject.GetComponent(); fov = virtualCamera.m_Lens.FieldOfView; }); } public override void Exit() { base.Exit(); if (virtualCamera != null) virtualCamera.m_Lens.FieldOfView = fov; cinemachineBrain.enabled = false; GameObject.Destroy(cinemachineBrain); cinemachineBrain = null; } public override void OnZoom(float zoom) { base.OnZoom(zoom); //Debug.Log(cinemachineBrain); if (virtualCamera) { virtualCamera.m_Lens.FieldOfView = Mathf.Clamp(virtualCamera.m_Lens.FieldOfView + (zoom * -10), 40, 70); } } } }