docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class CinemachineThirdPersonFollow

    Third-person follower, with complex pivoting: horizontal about the origin, vertical about the shoulder.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    CinemachineComponentBase
    CinemachineThirdPersonFollow
    Implements
    CinemachineFreeLookModifier.IModifierValueSource
    CinemachineFreeLookModifier.IModifiablePositionDamping
    CinemachineFreeLookModifier.IModifiableDistance
    Inherited Members
    CinemachineComponentBase.Epsilon
    CinemachineComponentBase.VirtualCamera
    CinemachineComponentBase.OnEnable()
    CinemachineComponentBase.OnDisable()
    CinemachineComponentBase.FollowTarget
    CinemachineComponentBase.LookAtTarget
    CinemachineComponentBase.FollowTargetAsGroup
    CinemachineComponentBase.FollowTargetPosition
    CinemachineComponentBase.FollowTargetRotation
    CinemachineComponentBase.LookAtTargetAsGroup
    CinemachineComponentBase.LookAtTargetPosition
    CinemachineComponentBase.LookAtTargetRotation
    CinemachineComponentBase.VcamState
    CinemachineComponentBase.PrePipelineMutateCameraState(ref CameraState, float)
    CinemachineComponentBase.BodyAppliesAfterAim
    CinemachineComponentBase.OnTransitionFromCamera(ICinemachineCamera, Vector3, float)
    CinemachineComponentBase.ForceCameraPosition(Vector3, Quaternion)
    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.StartCoroutine_Auto(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.DestroyObject(Object, float)
    Object.DestroyObject(Object)
    Object.FindSceneObjectsOfType(Type)
    Object.FindObjectsOfTypeIncludingAssets(Type)
    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.FindObjectsOfTypeAll(Type)
    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: Unity.Cinemachine
    Assembly: Unity.Cinemachine.dll
    Syntax
    [AddComponentMenu("Cinemachine/Procedural/Position Control/Cinemachine Third Person Follow")]
    [DisallowMultipleComponent]
    [CameraPipeline(CinemachineCore.Stage.Body)]
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.cinemachine@3.1/manual/CinemachineThirdPersonFollow.html")]
    public class CinemachineThirdPersonFollow : CinemachineComponentBase, CinemachineFreeLookModifier.IModifierValueSource, CinemachineFreeLookModifier.IModifiablePositionDamping, CinemachineFreeLookModifier.IModifiableDistance

    Fields

    AvoidObstacles

    If enabled, camera will be pulled in front of occluding obstacles.

    Declaration
    [FoldoutWithEnabledButton("Enabled")]
    public CinemachineThirdPersonFollow.ObstacleSettings AvoidObstacles
    Field Value
    Type Description
    CinemachineThirdPersonFollow.ObstacleSettings

    CameraDistance

    How far behind the hand the camera will be placed.

    Declaration
    [Tooltip("How far behind the hand the camera will be placed")]
    public float CameraDistance
    Field Value
    Type Description
    float

    CameraSide

    Specifies which shoulder (left, right, or in-between) the camera is on.

    Declaration
    [Tooltip("Specifies which shoulder (left, right, or in-between) the camera is on")]
    [Range(0, 1)]
    public float CameraSide
    Field Value
    Type Description
    float

    Damping

    How responsively the camera tracks the target. Each axis (camera-local) can have its own setting. Value is the approximate time it takes the camera to catch up to the target's new position. Smaller values give a more rigid effect, larger values give a squishier one.

    Declaration
    [Tooltip("How responsively the camera tracks the target.  Each axis (camera-local) can have its own setting.  Value is the approximate time it takes the camera to catch up to the target's new position.  Smaller values give a more rigid effect, larger values give a squishier one")]
    public Vector3 Damping
    Field Value
    Type Description
    Vector3

    ShoulderOffset

    Position of the shoulder pivot relative to the Follow target origin.
    This offset is in target-local space.

    Declaration
    [Header("Rig")]
    [Tooltip("Position of the shoulder pivot relative to the Follow target origin.  This offset is in target-local space")]
    public Vector3 ShoulderOffset
    Field Value
    Type Description
    Vector3

    VerticalArmLength

    Vertical offset of the hand in relation to the shoulder.
    Arm length will affect the follow target's screen position when the camera rotates vertically.

    Declaration
    [Tooltip("Vertical offset of the hand in relation to the shoulder.  Arm length will affect the follow target's screen position when the camera rotates vertically")]
    public float VerticalArmLength
    Field Value
    Type Description
    float

    Properties

    CurrentObstacle

    The current obstacle that is being avoided.

    Declaration
    public Collider CurrentObstacle { get; set; }
    Property Value
    Type Description
    Collider

    IsValid

    True if component is enabled and has a Follow target defined

    Declaration
    public override bool IsValid { get; }
    Property Value
    Type Description
    bool
    Overrides
    CinemachineComponentBase.IsValid

    Stage

    Get the Cinemachine Pipeline stage that this component implements. Always returns the Aim stage

    Declaration
    public override CinemachineCore.Stage Stage { get; }
    Property Value
    Type Description
    CinemachineCore.Stage
    Overrides
    CinemachineComponentBase.Stage

    Methods

    GetMaxDampTime()

    Report maximum damping time needed for this component.

    Declaration
    public override float GetMaxDampTime()
    Returns
    Type Description
    float

    Highest damping setting in this component

    Overrides
    CinemachineComponentBase.GetMaxDampTime()

    GetRigPositions(out Vector3, out Vector3, out Vector3)

    Internal use only. Public for the inspector gizmo

    Declaration
    public void GetRigPositions(out Vector3 root, out Vector3 shoulder, out Vector3 hand)
    Parameters
    Type Name Description
    Vector3 root

    Root of the rig.

    Vector3 shoulder

    Shoulder of the rig.

    Vector3 hand

    Hand of the rig.

    MutateCameraState(ref CameraState, float)

    Orients the camera to match the Follow target's orientation

    Declaration
    public override void MutateCameraState(ref CameraState curState, float deltaTime)
    Parameters
    Type Name Description
    CameraState curState

    The current camera state

    float deltaTime

    Elapsed time since last frame, for damping calculations.
    If negative, previous state is reset.

    Overrides
    CinemachineComponentBase.MutateCameraState(ref CameraState, float)

    OnTargetObjectWarped(Transform, Vector3)

    This is called to notify the user that a target got warped, so that we 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
    CinemachineComponentBase.OnTargetObjectWarped(Transform, Vector3)

    Implements

    CinemachineFreeLookModifier.IModifierValueSource
    CinemachineFreeLookModifier.IModifiablePositionDamping
    CinemachineFreeLookModifier.IModifiableDistance
    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)