Class CinemachineClearShot | Package Manager UI website
docs.unity3d.com
    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 CinemachineCollider 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
    MonoBehaviour
    CinemachineVirtualCameraBase
    CinemachineClearShot
    Inherited Members
    CinemachineVirtualCameraBase.CinemachineGUIDebuggerCallback
    CinemachineVirtualCameraBase.m_ExcludedPropertiesInInspector
    CinemachineVirtualCameraBase.m_LockStageInInspector
    CinemachineVirtualCameraBase.ValidatingStreamVersion
    CinemachineVirtualCameraBase.m_Priority
    CinemachineVirtualCameraBase.AddExtension(CinemachineExtension)
    CinemachineVirtualCameraBase.RemoveExtension(CinemachineExtension)
    CinemachineVirtualCameraBase.InvokePostPipelineStageCallback(CinemachineVirtualCameraBase, CinemachineCore.Stage, CameraState, Single)
    CinemachineVirtualCameraBase.Name
    CinemachineVirtualCameraBase.Priority
    CinemachineVirtualCameraBase.SetPositionBlendMethod(CameraState, CinemachineVirtualCameraBase.PositionBlendMethod)
    CinemachineVirtualCameraBase.VirtualCameraGameObject
    CinemachineVirtualCameraBase.ParentCamera
    CinemachineVirtualCameraBase.PreviousStateIsValid
    CinemachineVirtualCameraBase.UpdateCameraState(Vector3, Single)
    CinemachineVirtualCameraBase.Start()
    CinemachineVirtualCameraBase.OnDestroy()
    CinemachineVirtualCameraBase.OnValidate()
    CinemachineVirtualCameraBase.OnDisable()
    CinemachineVirtualCameraBase.Update()
    CinemachineVirtualCameraBase.OnTransformParentChanged()
    CinemachineVirtualCameraBase.ResolveLookAt(Transform)
    CinemachineVirtualCameraBase.ResolveFollow(Transform)
    CinemachineVirtualCameraBase.MoveToTopOfPrioritySubqueue()
    Namespace: Cinemachine
    Syntax
    [DocumentationSorting(DocumentationSortingAttribute.Level.UserRef)]
    public class CinemachineClearShot : CinemachineVirtualCameraBase, ICinemachineCamera

    Fields

    m_ActivateAfter

    Wait this many seconds before activating a new child camera

    Declaration
    public float m_ActivateAfter
    Field Value
    Type Description
    System.Single

    m_ChildCameras

    Internal API for the editor. Do not use this filed.

    Declaration
    public CinemachineVirtualCameraBase[] m_ChildCameras
    Field Value
    Type Description
    CinemachineVirtualCameraBase[]

    m_CustomBlends

    This is the asset which contains custom settings for specific blends

    Declaration
    public CinemachineBlenderSettings m_CustomBlends
    Field Value
    Type Description
    CinemachineBlenderSettings

    m_DefaultBlend

    The blend which is used if you don't explicitly define a blend between two Virtual Cameras

    Declaration
    public CinemachineBlendDefinition m_DefaultBlend
    Field Value
    Type Description
    CinemachineBlendDefinition

    m_Follow

    Default object for the camera children wants to move with (the body target), if not specified in a child camera. May be empty.

    Declaration
    public Transform m_Follow
    Field Value
    Type Description
    Transform

    m_LookAt

    Default object for the camera children to look at (the aim target), if not specified in a child camera. May be empty.

    Declaration
    public Transform m_LookAt
    Field Value
    Type Description
    Transform

    m_MinDuration

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

    Declaration
    public float m_MinDuration
    Field Value
    Type Description
    System.Single

    m_RandomizeChoice

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

    Declaration
    public bool m_RandomizeChoice
    Field Value
    Type Description
    System.Boolean

    m_ShowDebugText

    When enabled, the current camera and blend will be indicated in the game window, for debugging

    Declaration
    public bool m_ShowDebugText
    Field Value
    Type Description
    System.Boolean

    Properties

    ChildCameras

    The list of child cameras. These are just the immediate children in the hierarchy.

    Declaration
    public CinemachineVirtualCameraBase[] ChildCameras { get; }
    Property Value
    Type Description
    CinemachineVirtualCameraBase[]

    Description

    Gets a brief debug description of this virtual camera, for use when displayiong debug info

    Declaration
    public override string Description { get; }
    Property Value
    Type Description
    System.String
    Overrides
    CinemachineVirtualCameraBase.Description

    Follow

    Get the current Follow target. Returns parent's Follow if parent is non-null and no specific Follow defined for this camera

    Declaration
    public override Transform Follow { get; set; }
    Property Value
    Type Description
    Transform
    Overrides
    CinemachineVirtualCameraBase.Follow

    IsBlending

    Is there a blend in progress?

    Declaration
    public bool IsBlending { get; }
    Property Value
    Type Description
    System.Boolean

    LiveChild

    Get the current "best" child virtual camera, that would be chosen if the ClearShot camera were active.

    Declaration
    public ICinemachineCamera LiveChild { get; set; }
    Property Value
    Type Description
    ICinemachineCamera

    LiveChildOrSelf

    Return the live child.

    Declaration
    public override ICinemachineCamera LiveChildOrSelf { get; }
    Property Value
    Type Description
    ICinemachineCamera
    Overrides
    CinemachineVirtualCameraBase.LiveChildOrSelf

    LookAt

    Get the current LookAt target. Returns parent's LookAt if parent is non-null and no specific LookAt defined for this camera

    Declaration
    public override Transform LookAt { get; set; }
    Property Value
    Type Description
    Transform
    Overrides
    CinemachineVirtualCameraBase.LookAt

    State

    The CameraState of the currently live child

    Declaration
    public override CameraState State { get; }
    Property Value
    Type Description
    CameraState
    Overrides
    CinemachineVirtualCameraBase.State

    Methods

    InternalUpdateCameraState(Vector3, Single)

    Internal use only. Called by CinemachineCore at designated update time so the vcam can position itself and track its targets. This implementation updates all the children, chooses the best one, and implements any required blending.

    Declaration
    public override void InternalUpdateCameraState(Vector3 worldUp, float deltaTime)
    Parameters
    Type Name Description
    Vector3 worldUp

    Default world Up, set by the CinemachineBrain

    System.Single deltaTime

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

    Overrides
    CinemachineVirtualCameraBase.InternalUpdateCameraState(Vector3, Single)

    IsLiveChild(ICinemachineCamera)

    Check whether the vcam a live child of this camera.

    Declaration
    public override bool IsLiveChild(ICinemachineCamera vcam)
    Parameters
    Type Name Description
    ICinemachineCamera vcam

    The Virtual Camera to check

    Returns
    Type Description
    System.Boolean

    True if the vcam is currently actively influencing the state of this vcam

    Overrides
    CinemachineVirtualCameraBase.IsLiveChild(ICinemachineCamera)

    OnEnable()

    Makes sure the internal child cache is up to date

    Declaration
    protected override void OnEnable()
    Overrides
    CinemachineVirtualCameraBase.OnEnable()

    OnTargetObjectWarped(Transform, Vector3)

    This is called to notify the vcam that a target got warped, so that the vcam can update its internal state to make the camera also warp seamlessy.

    Declaration
    public override void OnTargetObjectWarped(Transform target, Vector3 positionDelta)
    Parameters
    Type Name Description
    Transform target

    The object that was warped

    Vector3 positionDelta

    The amount the target's position changed

    Overrides
    CinemachineVirtualCameraBase.OnTargetObjectWarped(Transform, Vector3)

    OnTransformChildrenChanged()

    Makes sure the internal child cache is up to date

    Declaration
    public void OnTransformChildrenChanged()

    OnTransitionFromCamera(ICinemachineCamera, Vector3, Single)

    Notification that this virtual camera is going live. This implementation resets the child randomization.

    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

    System.Single deltaTime

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

    Overrides
    CinemachineVirtualCameraBase.OnTransitionFromCamera(ICinemachineCamera, Vector3, Single)

    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()
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023