| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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<CinemachineBrain>();
- Utility.DelayExe(2, () =>
- {
- virtualCamera = cinemachineBrain.ActiveVirtualCamera.VirtualCameraGameObject.GetComponent<CinemachineVirtualCamera>();
- 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);
- }
- }
- }
- }
|