Rasagar/Library/PackageCache/com.unity.cinemachine/Samples~/Cinemachine Example Scenes/Shared/Scripts/ActivateCameraWithDistance.cs
2024-08-26 23:07:20 +03:00

47 lines
1.2 KiB
C#

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<CinemachineBrain>();
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();
}
}
}