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
Inherited Members
Namespace: Cinemachine
Syntax
[DocumentationSorting(DocumentationSortingAttribute.Level.UserRef)]
[DisallowMultipleComponent]
[ExecuteAlways]
[ExcludeFromPreset]
[AddComponentMenu("Cinemachine/CinemachineClearShot")]
[HelpURL("https://docs.unity.cn/Packages/com.unity.cinemachine@2.8/manual/CinemachineClearShot.html")]
public class CinemachineClearShot : CinemachineVirtualCameraBase, ICinemachineCamera, ISerializationCallbackReceiver
Fields
m_ActivateAfter
Wait this many seconds before activating a new child camera
Declaration
[Tooltip("Wait this many seconds before activating a new child camera")]
public float m_ActivateAfter
Field Value
Type | Description |
---|---|
Single |
m_CustomBlends
This is the asset which contains custom settings for specific blends
Declaration
[HideInInspector]
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
[Tooltip("The blend which is used if you don't explicitly define a blend between two Virtual Cameras")]
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
[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 children specify targets of their own.")]
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
[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 children specify targets of their own.")]
public Transform m_LookAt
Field Value
Type | Description |
---|---|
Transform |
m_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")]
public float m_MinDuration
Field Value
Type | Description |
---|---|
Single |
m_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.")]
public bool m_RandomizeChoice
Field Value
Type | Description |
---|---|
Boolean |
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 |
---|---|
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 |
---|---|
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 |
---|---|
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 |
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 CameraState of the currently live child
Declaration
public override CameraState State { get; }
Property Value
Type | Description |
---|---|
CameraState |
Overrides
Methods
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
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 |
Single | deltaTime | Delta time for time-based effects (ignore if less than 0) |
Overrides
IsLiveChild(ICinemachineCamera, Boolean)
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 |
Boolean | dominantChildOnly | If truw, will only return true if this vcam is the dominat live child |
Returns
Type | Description |
---|---|
Boolean | True if the vcam is currently actively influencing the state of this vcam |
Overrides
OnDisable()
Uninstall the GUI handler
Declaration
protected override void OnDisable()
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()
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 |
Single | deltaTime | Delta time for time-based effects (ignore if less than or equal to 0) |
Overrides
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()