using UnityEngine; namespace Cinemachine.Examples { [AddComponentMenu("")] // Don't display in add component menu public class ActivateCameraWithDistance : MonoBehaviour { public GameObject objectToCheck; public float distanceToObject = 15f; public CinemachineVirtualCameraBase initialActiveCam; public CinemachineVirtualCameraBase switchCameraTo; CinemachineBrain brain; void Start() { brain = Camera.main.GetComponent(); SwitchCam(initialActiveCam); } // Update is called once per frame void Update() { if (objectToCheck && switchCameraTo) { if (Vector3.Distance(transform.position, objectToCheck.transform.position) < distanceToObject) { SwitchCam(switchCameraTo); } else { SwitchCam(initialActiveCam); } } } public void SwitchCam(CinemachineVirtualCameraBase vcam) { if (brain == null || vcam == null) return; if (brain.ActiveVirtualCamera != (ICinemachineCamera)vcam) vcam.MoveToTopOfPrioritySubqueue(); } } }