ActivateCameraWithDistance.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using UnityEngine;
  2. namespace Cinemachine.Examples
  3. {
  4. [AddComponentMenu("")] // Don't display in add component menu
  5. public class ActivateCameraWithDistance : MonoBehaviour
  6. {
  7. public GameObject objectToCheck;
  8. public float distanceToObject = 15f;
  9. public CinemachineVirtualCameraBase initialActiveCam;
  10. public CinemachineVirtualCameraBase switchCameraTo;
  11. CinemachineBrain brain;
  12. void Start()
  13. {
  14. brain = Camera.main.GetComponent<CinemachineBrain>();
  15. SwitchCam(initialActiveCam);
  16. }
  17. // Update is called once per frame
  18. void Update()
  19. {
  20. if (objectToCheck && switchCameraTo)
  21. {
  22. if (Vector3.Distance(transform.position, objectToCheck.transform.position) < distanceToObject)
  23. {
  24. SwitchCam(switchCameraTo);
  25. }
  26. else
  27. {
  28. SwitchCam(initialActiveCam);
  29. }
  30. }
  31. }
  32. public void SwitchCam(CinemachineVirtualCameraBase vcam)
  33. {
  34. if (brain == null || vcam == null)
  35. return;
  36. if (brain.ActiveVirtualCamera != (ICinemachineCamera)vcam)
  37. vcam.MoveToTopOfPrioritySubqueue();
  38. }
  39. }
  40. }