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.
Inherited Members
Namespace: Cinemachine
Syntax
[DocumentationSorting(DocumentationSortingAttribute.Level.UserRef)]
public class CinemachineStateDrivenCamera : CinemachineVirtualCameraBase, ICinemachineCamera
Fields
m_AnimatedTarget
The state machine whose state changes will drive this camera's choice of active child
Declaration
public Animator m_AnimatedTarget
Field Value
Type | Description |
---|---|
Animator |
m_ChildCameras
Internal API for the editor. Do not use this field
Declaration
public CinemachineVirtualCameraBase[] m_ChildCameras
Field Value
Type | Description |
---|---|
CinemachineVirtualCameraBase[] |
m_CustomBlends
This is the asset which contains custom settings for specific child 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 Camera children.
Declaration
public CinemachineBlendDefinition m_DefaultBlend
Field Value
Type | Description |
---|---|
CinemachineBlendDefinition |
m_EnableAllChildCameras
Force all child cameras to be enabled. This is useful if animating them in Timeline, but consumes extra resources.
Declaration
public bool m_EnableAllChildCameras
Field Value
Type | Description |
---|---|
System.Boolean |
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
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
public CinemachineStateDrivenCamera.Instruction[] m_Instructions
Field Value
Type | Description |
---|---|
CinemachineStateDrivenCamera.Instruction[] |
m_LayerIndex
Which layer in the target FSM to observe
Declaration
public int m_LayerIndex
Field Value
Type | Description |
---|---|
System.Int32 |
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
public Transform m_LookAt
Field Value
Type | Description |
---|---|
Transform |
m_ParentHash
Internal API for the Inspector editor
Declaration
public CinemachineStateDrivenCamera.ParentHash[] m_ParentHash
Field Value
Type | Description |
---|---|
CinemachineStateDrivenCamera.ParentHash[] |
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
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
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 State Driven 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
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
State
The State of the current live child
Declaration
public override CameraState State { get; }
Property Value
Type | Description |
---|---|
CameraState |
Overrides
Methods
CreateFakeHashName(Int32, String)
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 string CreateFakeHashName(int parentHash, string stateName)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | parentHash | |
System.String | stateName |
Returns
Type | Description |
---|---|
System.String |
InternalUpdateCameraState(Vector3, Single)
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 |
System.Single | deltaTime | Delta time for time-based effects (ignore if less than or equal to 0) |
Overrides
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
OnEnable()
Makes sure the internal child cache is up to date
Declaration
protected override void OnEnable()
Overrides
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
OnTransformChildrenChanged()
Makes sure the internal child cache is up to date
Declaration
public void OnTransformChildrenChanged()
ValidateInstructions()
Internal API for the inspector editor.
Declaration
public void ValidateInstructions()