using Cinemachine; using System; using UnityEngine; using UnityEngine.Assertions; namespace Unity.BossRoom.CameraUtils { public class CameraController : MonoBehaviour { private CinemachineFreeLook m_MainCamera; // Action to notify when the camera attaches (with character transform) public static Action OnCameraAttached; void Start() { AttachCamera(); } private void AttachCamera() { m_MainCamera = GameObject.FindObjectOfType(); Assert.IsNotNull(m_MainCamera, "CameraController.AttachCamera: Couldn't find gameplay freelook camera"); if (m_MainCamera) { // Camera follows and looks at this character m_MainCamera.Follow = transform; m_MainCamera.LookAt = transform; // Default rotation / zoom m_MainCamera.m_Heading.m_Bias = 40f; m_MainCamera.m_YAxis.Value = 0.5f; // Invoke Action to notify other scripts OnCameraAttached?.Invoke(transform); } } } }