Class CinemachineVirtualCamera | Package Manager UI website
docs.unity3d.com
    Show / Hide Table of Contents

    Class CinemachineVirtualCamera

    This behaviour is intended to be attached to an empty Transform GameObject, and it represents a Virtual Camera within the Unity scene.

    The Virtual Camera will animate its Transform according to the rules contained in its CinemachineComponent pipeline (Aim, Body, and Noise). When the virtual camera is Live, the Unity camera will assume the position and orientation of the virtual camera.

    A virtual camera is not a camera. Instead, it can be thought of as a camera controller, not unlike a cameraman. It can drive the Unity Camera and control its position, orientation, lens settings, and PostProcessing effects. Each Virtual Camera owns its own Cinemachine Component Pipeline, through which you provide the instructions for dynamically tracking specific game objects.

    A virtual camera is very lightweight, and does no rendering of its own. It merely tracks interesting GameObjects, and positions itself accordingly. A typical game can have dozens of virtual cameras, each set up to follow a particular character or capture a particular event.

    A Virtual Camera can be in any of three states:

    • Live: The virtual camera is actively controlling the Unity Camera. The virtual camera is tracking its targets and being updated every frame.
    • Standby: The virtual camera is tracking its targets and being updated every frame, but no Unity Camera is actively being controlled by it. This is the state of a virtual camera that is enabled in the scene but perhaps at a lower priority than the Live virtual camera.
    • Disabled: The virtual camera is present but disabled in the scene. It is not actively tracking its targets and so consumes no processing power. However, the virtual camera can be made live from the Timeline.

    The Unity Camera can be driven by any virtual camera in the scene. The game logic can choose the virtual camera to make live by manipulating the virtual cameras' enabled flags and their priorities, based on game logic.

    In order to be driven by a virtual camera, the Unity Camera must have a CinemachineBrain behaviour, which will select the most eligible virtual camera based on its priority or on other criteria, and will manage blending.

    Inheritance
    System.Object
    CinemachineVirtualCameraBase
    CinemachineVirtualCamera
    Inherited Members
    CinemachineVirtualCameraBase.m_ExcludedPropertiesInInspector
    CinemachineVirtualCameraBase.m_LockStageInInspector
    CinemachineVirtualCameraBase.ValidatingStreamVersion
    CinemachineVirtualCameraBase.m_Priority
    CinemachineVirtualCameraBase.m_StandbyUpdate
    CinemachineVirtualCameraBase.AddExtension(CinemachineExtension)
    CinemachineVirtualCameraBase.RemoveExtension(CinemachineExtension)
    CinemachineVirtualCameraBase.InvokePostPipelineStageCallback(CinemachineVirtualCameraBase, CinemachineCore.Stage, CameraState, Single)
    CinemachineVirtualCameraBase.Name
    CinemachineVirtualCameraBase.Description
    CinemachineVirtualCameraBase.Priority
    CinemachineVirtualCameraBase.ApplyPositionBlendMethod(CameraState, CinemachineVirtualCameraBase.BlendHint)
    CinemachineVirtualCameraBase.VirtualCameraGameObject
    CinemachineVirtualCameraBase.IsValid
    CinemachineVirtualCameraBase.ParentCamera
    CinemachineVirtualCameraBase.IsLiveChild(ICinemachineCamera, Boolean)
    CinemachineVirtualCameraBase.PreviousStateIsValid
    CinemachineVirtualCameraBase.UpdateCameraState(Vector3, Single)
    CinemachineVirtualCameraBase.OnTransformParentChanged()
    CinemachineVirtualCameraBase.Start()
    CinemachineVirtualCameraBase.OnDisable()
    CinemachineVirtualCameraBase.Update()
    CinemachineVirtualCameraBase.ResolveLookAt(Transform)
    CinemachineVirtualCameraBase.ResolveFollow(Transform)
    CinemachineVirtualCameraBase.MoveToTopOfPrioritySubqueue()
    CinemachineVirtualCameraBase.CreateBlend(ICinemachineCamera, ICinemachineCamera, CinemachineBlendDefinition, CinemachineBlend)
    CinemachineVirtualCameraBase.PullStateFromVirtualCamera(Vector3, LensSettings)
    Namespace: Cinemachine
    Syntax
    [DocumentationSorting(DocumentationSortingAttribute.Level.UserRef)]
    public class CinemachineVirtualCamera : CinemachineVirtualCameraBase, ICinemachineCamera

    Fields

    CreatePipelineOverride

    Override component pipeline creation. This needs to be done by the editor to support Undo. The override must do exactly the same thing as the CreatePipeline method in this class.

    Declaration
    public static CinemachineVirtualCamera.CreatePipelineDelegate CreatePipelineOverride
    Field Value
    Type Description
    CinemachineVirtualCamera.CreatePipelineDelegate

    DestroyPipelineOverride

    Override component pipeline destruction. This needs to be done by the editor to support Undo.

    Declaration
    public static CinemachineVirtualCamera.DestroyPipelineDelegate DestroyPipelineOverride
    Field Value
    Type Description
    CinemachineVirtualCamera.DestroyPipelineDelegate

    m_Follow

    The object that the camera wants to move with (the Body target). The Body component of the CinemachineComponent pipeline will refer to this target and position the vcam in accordance with rules and settings that are provided to it. If this is null, then the vcam's Transform position will be used.

    Declaration
    public Transform m_Follow
    Field Value
    Type Description
    Transform

    m_Lens

    Specifies the LensSettings of this Virtual Camera. These settings will be transferred to the Unity camera when the vcam is live.

    Declaration
    public LensSettings m_Lens
    Field Value
    Type Description
    LensSettings

    m_LookAt

    The object that the camera wants to look at (the Aim target). The Aim component of the CinemachineComponent pipeline will refer to this target and orient the vcam in accordance with rules and settings that are provided to it. If this is null, then the vcam's Transform orientation will be used.

    Declaration
    public Transform m_LookAt
    Field Value
    Type Description
    Transform

    m_Transitions

    Collection of parameters that influence how this virtual camera transitions from other virtual cameras

    Declaration
    public CinemachineVirtualCameraBase.TransitionParams m_Transitions
    Field Value
    Type Description
    CinemachineVirtualCameraBase.TransitionParams

    PipelineName

    This is the name of the hidden GameObject that will be created as a child object of the virtual camera. This hidden game object acts as a container for the polymorphic CinemachineComponent pipeline. The Inspector UI for the Virtual Camera provides access to this pipleline, as do the CinemachineComponent-family of public methods in this class. The lifecycle of the pipeline GameObject is managed automatically.

    Declaration
    public const string PipelineName = "cm"
    Field Value
    Type Description
    System.String

    Properties

    Follow

    Get the Follow target for the Body component in the Cinemachine pipeline. If this vcam is a part of a meta-camera collection, then the owner's target will be used if the local target is null.

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

    LookAt

    Get the LookAt target for the Aim component in the Cinemachine pipeline. If this vcam is a part of a meta-camera collection, then the owner's target will be used if the local target is null.

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

    State

    The CameraState object holds all of the information necessary to position the Unity camera. It is the output of this class.

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

    UserIsDragging

    API for the editor, to make the dragging of position handles behave better.

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

    Methods

    AddCinemachineComponent<T>()

    Add a component to the cinemachine pipeline.

    Declaration
    public T AddCinemachineComponent<T>()
        where T : CinemachineComponentBase
    Returns
    Type Description
    T
    Type Parameters
    Name Description
    T

    DestroyCinemachineComponent<T>()

    Remove a component from the cinemachine pipeline.

    Declaration
    public void DestroyCinemachineComponent<T>()
        where T : CinemachineComponentBase
    Type Parameters
    Name Description
    T

    GetCinemachineComponent(CinemachineCore.Stage)

    Get the component set for a specific stage.

    Declaration
    public CinemachineComponentBase GetCinemachineComponent(CinemachineCore.Stage stage)
    Parameters
    Type Name Description
    CinemachineCore.Stage stage

    The stage for which we want the component

    Returns
    Type Description
    CinemachineComponentBase

    The Cinemachine component for that stage, or null if not defined

    GetCinemachineComponent<T>()

    Get an existing component of a specific type from the cinemachine pipeline.

    Declaration
    public T GetCinemachineComponent<T>()
        where T : CinemachineComponentBase
    Returns
    Type Description
    T
    Type Parameters
    Name Description
    T

    GetComponentOwner()

    Get the hidden CinemachinePipeline child object.

    Declaration
    public Transform GetComponentOwner()
    Returns
    Type Description
    Transform

    GetComponentPipeline()

    Get the component pipeline owned by the hidden child pipline container. For most purposes, it is preferable to use the GetCinemachineComponent method.

    Declaration
    public CinemachineComponentBase[] GetComponentPipeline()
    Returns
    Type Description
    CinemachineComponentBase[]

    InternalUpdateCameraState(Vector3, Single)

    Internal use only. Do not call this method. Called by CinemachineCore at the appropriate Update time so the vcam can position itself and track its targets. This class will invoke its pipeline and generate a CameraState for this frame.

    Declaration
    public override void InternalUpdateCameraState(Vector3 worldUp, float deltaTime)
    Parameters
    Type Name Description
    Vector3 worldUp
    System.Single deltaTime
    Overrides
    CinemachineVirtualCameraBase.InternalUpdateCameraState(Vector3, Single)

    InvalidateComponentPipeline()

    Editor API: Call this when changing the pipeline from the editor. Will force a rebuild of the pipeline cache.

    Declaration
    public void InvalidateComponentPipeline()

    OnDestroy()

    Calls the DestroyPipelineDelegate for destroying the hidden child object, to support undo.

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

    OnEnable()

    Make sure that the pipeline 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)

    OnTransitionFromCamera(ICinemachineCamera, Vector3, Single)

    If we are transitioning from another vcam, grab the position from it.

    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)

    OnValidate()

    Enforce bounds for fields, when changed in inspector.

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

    See Also

    CinemachineVirtualCameraBase
    LensSettings
    CinemachineComposer
    CinemachineTransposer
    CinemachineBasicMultiChannelPerlin
    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