docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class CinemachineStateDrivenCamera

    This is a virtual camera "manager" that owns and manages a collection of child Virtual Cameras. These child vcams are mapped to individual states in an animation state machine, allowing you to associate specific vcams to specific animation states. When that state is active in the state machine, then the associated camera will be activated.

    You can define custom blends and transitions between child cameras.

    In order to use this behaviour, you must have an animated target (i.e. an object animated with a state machine) to drive the behaviour.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    CinemachineVirtualCameraBase
    CinemachineStateDrivenCamera
    Implements
    ICinemachineCamera
    ISerializationCallbackReceiver
    Inherited Members
    CinemachineVirtualCameraBase.m_ExcludedPropertiesInInspector
    CinemachineVirtualCameraBase.m_LockStageInInspector
    CinemachineVirtualCameraBase.ValidatingStreamVersion
    CinemachineVirtualCameraBase.m_Priority
    CinemachineVirtualCameraBase.FollowTargetAttachment
    CinemachineVirtualCameraBase.LookAtTargetAttachment
    CinemachineVirtualCameraBase.m_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.AddExtension(CinemachineExtension)
    CinemachineVirtualCameraBase.RemoveExtension(CinemachineExtension)
    CinemachineVirtualCameraBase.InvokePostPipelineStageCallback(CinemachineVirtualCameraBase, CinemachineCore.Stage, ref CameraState, float)
    CinemachineVirtualCameraBase.InvokePrePipelineMutateCameraStateCallback(CinemachineVirtualCameraBase, ref CameraState, float)
    CinemachineVirtualCameraBase.InvokeOnTransitionInExtensions(ICinemachineCamera, Vector3, float)
    CinemachineVirtualCameraBase.Name
    CinemachineVirtualCameraBase.Priority
    CinemachineVirtualCameraBase.ApplyPositionBlendMethod(ref CameraState, CinemachineVirtualCameraBase.BlendHint)
    CinemachineVirtualCameraBase.VirtualCameraGameObject
    CinemachineVirtualCameraBase.IsValid
    CinemachineVirtualCameraBase.ParentCamera
    CinemachineVirtualCameraBase.PreviousStateIsValid
    CinemachineVirtualCameraBase.UpdateCameraState(Vector3, float)
    CinemachineVirtualCameraBase.OnDestroy()
    CinemachineVirtualCameraBase.OnTransformParentChanged()
    CinemachineVirtualCameraBase.Start()
    CinemachineVirtualCameraBase.GetInputAxisProvider()
    CinemachineVirtualCameraBase.OnValidate()
    CinemachineVirtualCameraBase.Update()
    CinemachineVirtualCameraBase.ResolveLookAt(Transform)
    CinemachineVirtualCameraBase.ResolveFollow(Transform)
    CinemachineVirtualCameraBase.MoveToTopOfPrioritySubqueue()
    CinemachineVirtualCameraBase.CreateBlend(ICinemachineCamera, ICinemachineCamera, CinemachineBlendDefinition, CinemachineBlend)
    CinemachineVirtualCameraBase.PullStateFromVirtualCamera(Vector3, ref LensSettings)
    CinemachineVirtualCameraBase.FollowTargetChanged
    CinemachineVirtualCameraBase.LookAtTargetChanged
    CinemachineVirtualCameraBase.UpdateTargetCache()
    CinemachineVirtualCameraBase.AbstractFollowTargetGroup
    CinemachineVirtualCameraBase.FollowTargetAsVcam
    CinemachineVirtualCameraBase.AbstractLookAtTargetGroup
    CinemachineVirtualCameraBase.LookAtTargetAsVcam
    CinemachineVirtualCameraBase.LegacyUpgrade(int)
    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.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.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.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: Cinemachine
    Assembly: Cinemachine.dll
    Syntax
    [DocumentationSorting(DocumentationSortingAttribute.Level.UserRef)]
    [DisallowMultipleComponent]
    [ExecuteAlways]
    [ExcludeFromPreset]
    [AddComponentMenu("Cinemachine/CinemachineStateDrivenCamera")]
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.cinemachine@2.9/manual/CinemachineStateDrivenCamera.html")]
    public class CinemachineStateDrivenCamera : CinemachineVirtualCameraBase, ICinemachineCamera, ISerializationCallbackReceiver

    Fields

    m_AnimatedTarget

    The state machine whose state changes will drive this camera's choice of active child

    Declaration
    [Space]
    [Tooltip("The state machine whose state changes will drive this camera's choice of active child")]
    public Animator m_AnimatedTarget
    Field Value
    Type Description
    Animator

    m_CustomBlends

    This is the asset which contains custom settings for specific child blends.

    Declaration
    [Tooltip("This is the asset which contains custom settings for specific child blends")]
    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 Camera children.

    Declaration
    [Tooltip("The blend which is used if you don't explicitly define a blend between two Virtual Camera children")]
    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 rig. May be empty

    Declaration
    [Tooltip("Default object for the camera children wants to move with (the body target), if not specified in a child camera.  May be empty if all of the children define targets of their own.")]
    public Transform m_Follow
    Field Value
    Type Description
    Transform

    m_Instructions

    The set of instructions associating virtual cameras with states. These instructions are used to choose the live child at any given moment

    Declaration
    [Tooltip("The set of instructions associating virtual cameras with states.  These instructions are used to choose the live child at any given moment")]
    public CinemachineStateDrivenCamera.Instruction[] m_Instructions
    Field Value
    Type Description
    Instruction[]

    m_LayerIndex

    Which layer in the target FSM to observe

    Declaration
    [Tooltip("Which layer in the target state machine to observe")]
    public int m_LayerIndex
    Field Value
    Type Description
    int

    m_LookAt

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

    Declaration
    [Tooltip("Default object for the camera children to look at (the aim target), if not specified in a child camera.  May be empty if all of the children define targets of their own.")]
    public Transform m_LookAt
    Field Value
    Type Description
    Transform

    m_ShowDebugText

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

    Declaration
    [Tooltip("When enabled, the current child camera and blend will be indicated in the game window, for debugging")]
    public bool m_ShowDebugText
    Field Value
    Type Description
    bool

    Properties

    ActiveBlend

    Get the current active blend in progress. Will return null if no blend is in progress.

    Declaration
    public CinemachineBlend ActiveBlend { get; }
    Property Value
    Type Description
    CinemachineBlend

    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
    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
    bool

    LiveChild

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

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

    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 State of the current live child

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

    Methods

    CreateFakeHash(int, AnimationClip)

    API for the inspector editor. Animation module does not have hashes for state parents, so we have to invent them in order to implement nested state handling

    Declaration
    public static int CreateFakeHash(int parentHash, AnimationClip clip)
    Parameters
    Type Name Description
    int parentHash

    Parent state's hash

    AnimationClip clip

    The clip to create the fake hash for

    Returns
    Type Description
    int

    The fake hash

    ForceCameraPosition(Vector3, Quaternion)

    Force the virtual camera to assume a given position and orientation

    Declaration
    public override void ForceCameraPosition(Vector3 pos, Quaternion rot)
    Parameters
    Type Name Description
    Vector3 pos

    Worldspace pposition to take

    Quaternion rot

    Worldspace orientation to take

    Overrides
    CinemachineVirtualCameraBase.ForceCameraPosition(Vector3, Quaternion)

    InternalUpdateCameraState(Vector3, float)

    Internal use only. Do not call this method. 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

    float deltaTime

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

    Overrides
    CinemachineVirtualCameraBase.InternalUpdateCameraState(Vector3, float)

    IsLiveChild(ICinemachineCamera, bool)

    Check whether the vcam a live child of this camera.

    Declaration
    public override bool IsLiveChild(ICinemachineCamera vcam, bool dominantChildOnly = false)
    Parameters
    Type Name Description
    ICinemachineCamera vcam

    The Virtual Camera to check

    bool dominantChildOnly

    If true, will only return true if this vcam is the dominat live child

    Returns
    Type Description
    bool

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

    Overrides
    CinemachineVirtualCameraBase.IsLiveChild(ICinemachineCamera, bool)

    OnDisable()

    Uninstall the GUI handler

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

    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 seamlessly.

    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, 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
    CinemachineVirtualCameraBase.OnTransitionFromCamera(ICinemachineCamera, Vector3, float)

    Implements

    ICinemachineCamera
    ISerializationCallbackReceiver
    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)