docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class CinemachineClearShot

    Cinemachine ClearShot is a "manager camera" that owns and manages a set of Virtual Camera gameObject children. When Live, the ClearShot will check the children, and choose the one with the best quality shot and make it Live.

    This can be a very powerful tool. If the child cameras have shot evaluator extensions, they will analyze the scene for target obstructions, optimal target distance, and other items, and report their assessment of shot quality back to the ClearShot parent, who will then choose the best one. You can use this to set up complex multi-camera coverage of a scene, and be assured that a clear shot of the target will always be available.

    If multiple child cameras have the same shot quality, the one with the highest priority will be chosen.

    You can also define custom blends between the ClearShot children.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    CinemachineVirtualCameraBase
    CinemachineCameraManagerBase
    CinemachineClearShot
    Implements
    ICinemachineMixer
    ICinemachineCamera
    Inherited Members
    CinemachineCameraManagerBase.DefaultTarget
    CinemachineCameraManagerBase.DefaultBlend
    CinemachineCameraManagerBase.CustomBlends
    CinemachineCameraManagerBase.OnEnable()
    CinemachineCameraManagerBase.OnDisable()
    CinemachineCameraManagerBase.Description
    CinemachineCameraManagerBase.State
    CinemachineCameraManagerBase.IsLiveChild(ICinemachineCamera, bool)
    CinemachineCameraManagerBase.ChildCameras
    CinemachineCameraManagerBase.PreviousStateIsValid
    CinemachineCameraManagerBase.IsBlending
    CinemachineCameraManagerBase.ActiveBlend
    CinemachineCameraManagerBase.LiveChild
    CinemachineCameraManagerBase.LookAt
    CinemachineCameraManagerBase.Follow
    CinemachineCameraManagerBase.InternalUpdateCameraState(Vector3, float)
    CinemachineCameraManagerBase.LookupBlend(ICinemachineCamera, ICinemachineCamera)
    CinemachineCameraManagerBase.OnTargetObjectWarped(Transform, Vector3)
    CinemachineCameraManagerBase.ForceCameraPosition(Vector3, Quaternion)
    CinemachineCameraManagerBase.InvalidateCameraCache()
    CinemachineCameraManagerBase.UpdateCameraCache()
    CinemachineCameraManagerBase.OnTransformChildrenChanged()
    CinemachineCameraManagerBase.SetLiveChild(ICinemachineCamera, Vector3, float)
    CinemachineCameraManagerBase.ResetLiveChild()
    CinemachineCameraManagerBase.FinalizeCameraState(float)
    CinemachineVirtualCameraBase.Priority
    CinemachineVirtualCameraBase.OutputChannel
    CinemachineVirtualCameraBase.IsDprecated
    CinemachineVirtualCameraBase.FollowTargetAttachment
    CinemachineVirtualCameraBase.LookAtTargetAttachment
    CinemachineVirtualCameraBase.StandbyUpdate
    CinemachineVirtualCameraBase.GetMaxDampTime()
    CinemachineVirtualCameraBase.DetachedFollowTargetDamp(float, float, float)
    CinemachineVirtualCameraBase.DetachedFollowTargetDamp(Vector3, Vector3, float)
    CinemachineVirtualCameraBase.DetachedFollowTargetDamp(Vector3, float, float)
    CinemachineVirtualCameraBase.DetachedLookAtTargetDamp(float, float, float)
    CinemachineVirtualCameraBase.DetachedLookAtTargetDamp(Vector3, Vector3, float)
    CinemachineVirtualCameraBase.DetachedLookAtTargetDamp(Vector3, float, float)
    CinemachineVirtualCameraBase.InvokePostPipelineStageCallback(CinemachineVirtualCameraBase, CinemachineCore.Stage, ref CameraState, float)
    CinemachineVirtualCameraBase.InvokePrePipelineMutateCameraStateCallback(CinemachineVirtualCameraBase, ref CameraState, float)
    CinemachineVirtualCameraBase.InvokeOnTransitionInExtensions(ICinemachineCamera, Vector3, float)
    CinemachineVirtualCameraBase.Name
    CinemachineVirtualCameraBase.IsValid
    CinemachineVirtualCameraBase.ParentCamera
    CinemachineVirtualCameraBase.UpdateCameraState(Vector3, float)
    CinemachineVirtualCameraBase.OnCameraActivated(ICinemachineCamera.ActivationEventParams)
    CinemachineVirtualCameraBase.OnTransformParentChanged()
    CinemachineVirtualCameraBase.OnDestroy()
    CinemachineVirtualCameraBase.Start()
    CinemachineVirtualCameraBase.Update()
    CinemachineVirtualCameraBase.ResolveLookAt(Transform)
    CinemachineVirtualCameraBase.ResolveFollow(Transform)
    CinemachineVirtualCameraBase.MoveToTopOfPrioritySubqueue()
    CinemachineVirtualCameraBase.Prioritize()
    CinemachineVirtualCameraBase.PullStateFromVirtualCamera(Vector3, ref LensSettings)
    CinemachineVirtualCameraBase.FollowTargetChanged
    CinemachineVirtualCameraBase.LookAtTargetChanged
    CinemachineVirtualCameraBase.UpdateTargetCache()
    CinemachineVirtualCameraBase.FollowTargetAsGroup
    CinemachineVirtualCameraBase.FollowTargetAsVcam
    CinemachineVirtualCameraBase.LookAtTargetAsGroup
    CinemachineVirtualCameraBase.LookAtTargetAsVcam
    CinemachineVirtualCameraBase.GetCinemachineComponent(CinemachineCore.Stage)
    CinemachineVirtualCameraBase.IsLive
    CinemachineVirtualCameraBase.IsParticipatingInBlend()
    CinemachineVirtualCameraBase.CancelDamping(bool)
    MonoBehaviour.IsInvoking()
    MonoBehaviour.CancelInvoke()
    MonoBehaviour.Invoke(string, float)
    MonoBehaviour.InvokeRepeating(string, float, float)
    MonoBehaviour.CancelInvoke(string)
    MonoBehaviour.IsInvoking(string)
    MonoBehaviour.StartCoroutine(string)
    MonoBehaviour.StartCoroutine(string, object)
    MonoBehaviour.StartCoroutine(IEnumerator)
    MonoBehaviour.StartCoroutine_Auto(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.destroyCancellationToken
    MonoBehaviour.useGUILayout
    MonoBehaviour.runInEditMode
    Behaviour.enabled
    Behaviour.isActiveAndEnabled
    Component.GetComponent(Type)
    Component.GetComponent<T>()
    Component.TryGetComponent(Type, out Component)
    Component.TryGetComponent<T>(out T)
    Component.GetComponent(string)
    Component.GetComponentInChildren(Type, bool)
    Component.GetComponentInChildren(Type)
    Component.GetComponentInChildren<T>(bool)
    Component.GetComponentInChildren<T>()
    Component.GetComponentsInChildren(Type, bool)
    Component.GetComponentsInChildren(Type)
    Component.GetComponentsInChildren<T>(bool)
    Component.GetComponentsInChildren<T>(bool, List<T>)
    Component.GetComponentsInChildren<T>()
    Component.GetComponentsInChildren<T>(List<T>)
    Component.GetComponentInParent(Type, bool)
    Component.GetComponentInParent(Type)
    Component.GetComponentInParent<T>(bool)
    Component.GetComponentInParent<T>()
    Component.GetComponentsInParent(Type, bool)
    Component.GetComponentsInParent(Type)
    Component.GetComponentsInParent<T>(bool)
    Component.GetComponentsInParent<T>(bool, List<T>)
    Component.GetComponentsInParent<T>()
    Component.GetComponents(Type)
    Component.GetComponents(Type, List<Component>)
    Component.GetComponents<T>(List<T>)
    Component.GetComponents<T>()
    Component.GetComponentIndex()
    Component.CompareTag(string)
    Component.SendMessageUpwards(string, object, SendMessageOptions)
    Component.SendMessageUpwards(string, object)
    Component.SendMessageUpwards(string)
    Component.SendMessageUpwards(string, SendMessageOptions)
    Component.SendMessage(string, object)
    Component.SendMessage(string)
    Component.SendMessage(string, object, SendMessageOptions)
    Component.SendMessage(string, SendMessageOptions)
    Component.BroadcastMessage(string, object, SendMessageOptions)
    Component.BroadcastMessage(string, object)
    Component.BroadcastMessage(string)
    Component.BroadcastMessage(string, SendMessageOptions)
    Component.transform
    Component.gameObject
    Component.tag
    Object.GetInstanceID()
    Object.GetHashCode()
    Object.Equals(object)
    Object.InstantiateAsync<T>(T)
    Object.InstantiateAsync<T>(T, Transform)
    Object.InstantiateAsync<T>(T, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int)
    Object.InstantiateAsync<T>(T, int, Transform)
    Object.InstantiateAsync<T>(T, int, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, InstantiateParameters)
    Object.InstantiateAsync<T>(T, int, InstantiateParameters)
    Object.InstantiateAsync<T>(T, Vector3, Quaternion, InstantiateParameters)
    Object.InstantiateAsync<T>(T, int, Vector3, Quaternion, InstantiateParameters)
    Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, InstantiateParameters)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Scene)
    Object.Instantiate<T>(T, InstantiateParameters)
    Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)
    Object.Instantiate(Object, Transform)
    Object.Instantiate(Object, Transform, bool)
    Object.Instantiate<T>(T)
    Object.Instantiate<T>(T, Vector3, Quaternion)
    Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
    Object.Instantiate<T>(T, Transform)
    Object.Instantiate<T>(T, Transform, bool)
    Object.Destroy(Object, float)
    Object.Destroy(Object)
    Object.DestroyImmediate(Object, bool)
    Object.DestroyImmediate(Object)
    Object.FindObjectsOfType(Type)
    Object.FindObjectsOfType(Type, bool)
    Object.FindObjectsByType(Type, FindObjectsSortMode)
    Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode)
    Object.DontDestroyOnLoad(Object)
    Object.DestroyObject(Object, float)
    Object.DestroyObject(Object)
    Object.FindSceneObjectsOfType(Type)
    Object.FindObjectsOfTypeIncludingAssets(Type)
    Object.FindObjectsOfType<T>()
    Object.FindObjectsByType<T>(FindObjectsSortMode)
    Object.FindObjectsOfType<T>(bool)
    Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
    Object.FindObjectOfType<T>()
    Object.FindObjectOfType<T>(bool)
    Object.FindFirstObjectByType<T>()
    Object.FindAnyObjectByType<T>()
    Object.FindFirstObjectByType<T>(FindObjectsInactive)
    Object.FindAnyObjectByType<T>(FindObjectsInactive)
    Object.FindObjectsOfTypeAll(Type)
    Object.FindObjectOfType(Type)
    Object.FindFirstObjectByType(Type)
    Object.FindAnyObjectByType(Type)
    Object.FindObjectOfType(Type, bool)
    Object.FindFirstObjectByType(Type, FindObjectsInactive)
    Object.FindAnyObjectByType(Type, FindObjectsInactive)
    Object.ToString()
    Object.name
    Object.hideFlags
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: Unity.Cinemachine
    Assembly: Unity.Cinemachine.dll
    Syntax
    [DisallowMultipleComponent]
    [ExecuteAlways]
    [ExcludeFromPreset]
    [AddComponentMenu("Cinemachine/Cinemachine ClearShot")]
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.cinemachine@3.1/manual/CinemachineClearShot.html")]
    public class CinemachineClearShot : CinemachineCameraManagerBase, ICinemachineMixer, ICinemachineCamera

    Fields

    ActivateAfter

    Wait this many seconds before activating a new child camera

    Declaration
    [Tooltip("Wait this many seconds before activating a new child camera")]
    [FormerlySerializedAs("m_ActivateAfter")]
    public float ActivateAfter
    Field Value
    Type Description
    float

    MinDuration

    An active camera must be active for at least this many seconds

    Declaration
    [Tooltip("An active camera must be active for at least this many seconds")]
    [FormerlySerializedAs("m_MinDuration")]
    public float MinDuration
    Field Value
    Type Description
    float

    RandomizeChoice

    If checked, camera choice will be randomized if multiple cameras are equally desirable.
    Otherwise, child list order will be used

    Declaration
    [Tooltip("If checked, camera choice will be randomized if multiple cameras are equally desirable.  Otherwise, child list order and child camera priority will be used.")]
    [FormerlySerializedAs("m_RandomizeChoice")]
    public bool RandomizeChoice
    Field Value
    Type Description
    bool

    Methods

    ChooseCurrentCamera(Vector3, float)

    Choose the appropriate current camera from among the ChildCameras, based on current state. If the returned camera is different from the current camera, an appropriate transition will be made.

    Declaration
    protected override CinemachineVirtualCameraBase ChooseCurrentCamera(Vector3 worldUp, float deltaTime)
    Parameters
    Type Name Description
    Vector3 worldUp

    Default world Up, set by the CinemachineBrain

    float deltaTime

    Delta time for time-based effects (ignore if less than or equal to 0)

    Returns
    Type Description
    CinemachineVirtualCameraBase

    The current child camera that should be active. Must be present in ChildCameras.

    Overrides
    CinemachineCameraManagerBase.ChooseCurrentCamera(Vector3, float)

    OnTransitionFromCamera(ICinemachineCamera, Vector3, float)

    Notification that this virtual camera is going live.

    Declaration
    public override void OnTransitionFromCamera(ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime)
    Parameters
    Type Name Description
    ICinemachineCamera fromCam

    The camera being deactivated. May be null.

    Vector3 worldUp

    Default world Up, set by the CinemachineBrain

    float deltaTime

    Delta time for time-based effects (ignore if less than or equal to 0)

    Overrides
    CinemachineCameraManagerBase.OnTransitionFromCamera(ICinemachineCamera, Vector3, float)

    PerformLegacyUpgrade(int)

    Override this to handle any upgrades necessitated by a streaming version change. Note that since this method is not called from the main thread, there are many things it cannot do, including checking a unity object for null.

    Declaration
    protected override void PerformLegacyUpgrade(int streamedVersion)
    Parameters
    Type Name Description
    int streamedVersion

    The version that was streamed

    Overrides
    CinemachineVirtualCameraBase.PerformLegacyUpgrade(int)

    Reset()

    Reset the component to default values.

    Declaration
    protected override void Reset()
    Overrides
    CinemachineCameraManagerBase.Reset()

    ResetRandomization()

    If RandomizeChoice is enabled, call this to re-randomize the children next frame. This is useful if you want to freshen up the shot.

    Declaration
    public void ResetRandomization()

    Implements

    ICinemachineMixer
    ICinemachineCamera

    Extension Methods

    CinemachineInputProviderExtensions.GetInputAxisProvider(CinemachineVirtualCameraBase)
    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)