Class CinemachineCollider
An add-on module for Cinemachine Virtual Camera that post-processes the final position of the virtual camera. Based on the supplied settings, the Collider will attempt to preserve the line of sight with the LookAt target of the virtual camera by moving away from objects that will obstruct the view.
Additionally, the Collider can be used to assess the shot quality and report this as a field in the camera State.
Inherited Members
Namespace: Cinemachine
Syntax
[DocumentationSorting(DocumentationSortingAttribute.Level.UserRef)]
public class CinemachineCollider : CinemachineExtension
Fields
m_AvoidObstacles
When enabled, will attempt to resolve situations where the line of sight to the target is blocked by an obstacle
Declaration
public bool m_AvoidObstacles
Field Value
Type | Description |
---|---|
System.Boolean |
m_CameraRadius
Camera will try to maintain this distance from any obstacle. Increase this value if you are seeing inside obstacles due to a large FOV on the camera.
Declaration
public float m_CameraRadius
Field Value
Type | Description |
---|---|
System.Single |
m_CollideAgainst
Objects on these layers will be detected.
Declaration
public LayerMask m_CollideAgainst
Field Value
Type | Description |
---|---|
LayerMask |
m_Damping
How gradually the camera returns to its normal position after having been corrected. Higher numbers will move the camera more gradually back to normal.
Declaration
public float m_Damping
Field Value
Type | Description |
---|---|
System.Single |
m_DampingWhenOccluded
How gradually the camera moves to resolve an occlusion. Higher numbers will move the camera more gradually.
Declaration
public float m_DampingWhenOccluded
Field Value
Type | Description |
---|---|
System.Single |
m_DistanceLimit
The raycast distance to test for when checking if the line of sight to this camera's target is clear.
Declaration
public float m_DistanceLimit
Field Value
Type | Description |
---|---|
System.Single |
m_IgnoreTag
Obstacles with this tag will be ignored. It is a good idea to set this field to the target's tag
Declaration
public string m_IgnoreTag
Field Value
Type | Description |
---|---|
System.String |
m_MaximumEffort
Upper limit on how many obstacle hits to process. Higher numbers may impact performance. In most environments, 4 is enough.
Declaration
public int m_MaximumEffort
Field Value
Type | Description |
---|---|
System.Int32 |
m_MinimumDistanceFromTarget
Obstacles closer to the target than this will be ignored
Declaration
public float m_MinimumDistanceFromTarget
Field Value
Type | Description |
---|---|
System.Single |
m_MinimumOcclusionTime
Don't take action unless occlusion has lasted at least this long.
Declaration
public float m_MinimumOcclusionTime
Field Value
Type | Description |
---|---|
System.Single |
m_OptimalTargetDistance
If greater than zero, a higher score will be given to shots when the target is closer to this distance. Set this to zero to disable this feature
Declaration
public float m_OptimalTargetDistance
Field Value
Type | Description |
---|---|
System.Single |
m_SmoothingTime
Smoothing to apply to obstruction resolution. Nearest camera point is held for at least this long.
Declaration
public float m_SmoothingTime
Field Value
Type | Description |
---|---|
System.Single |
m_Strategy
The way in which the Collider will attempt to preserve sight of the target.
Declaration
public CinemachineCollider.ResolutionStrategy m_Strategy
Field Value
Type | Description |
---|---|
CinemachineCollider.ResolutionStrategy |
m_TransparentLayers
Objects on these layers will never obstruct view of the target.
Declaration
public LayerMask m_TransparentLayers
Field Value
Type | Description |
---|---|
LayerMask |
Properties
DebugPaths
Inspector API for debugging collision resolution path
Declaration
public List<List<Vector3>> DebugPaths { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.List<System.Collections.Generic.List<Vector3>> |
Methods
CameraWasDisplaced(ICinemachineCamera)
See whether the virtual camera has been moved nby the collider
Declaration
public bool CameraWasDisplaced(ICinemachineCamera vcam)
Parameters
Type | Name | Description |
---|---|---|
ICinemachineCamera | vcam | The virtual camera in question. This might be different from the virtual camera that owns the collider, in the event that the camera has children |
Returns
Type | Description |
---|---|
System.Boolean | True if the virtual camera has been displaced due to collision or target obstruction |
IsTargetObscured(ICinemachineCamera)
See wheter an object is blocking the camera's view of the target
Declaration
public bool IsTargetObscured(ICinemachineCamera vcam)
Parameters
Type | Name | Description |
---|---|---|
ICinemachineCamera | vcam | The virtual camera in question. This might be different from the virtual camera that owns the collider, in the event that the camera has children |
Returns
Type | Description |
---|---|
System.Boolean | True if something is blocking the view |
PostPipelineStageCallback(CinemachineVirtualCameraBase, CinemachineCore.Stage, ref CameraState, Single)
Callback to do the collision resolution and shot evaluation
Declaration
protected override void PostPipelineStageCallback(CinemachineVirtualCameraBase vcam, CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
Parameters
Type | Name | Description |
---|---|---|
CinemachineVirtualCameraBase | vcam | |
CinemachineCore.Stage | stage | |
CameraState | state | |
System.Single | deltaTime |