Quick answer: Set the Rigidbody’s Interpolation to Interpolate and follow it in LateUpdate, not Update or FixedUpdate. This samples the interpolated position each render frame, eliminating the physics-vs-render rate mismatch jitter.

Here is how to fix Unity third-person or platformer cameras that visibly jitter as they follow a Rigidbody-driven player. The character moves smoothly but the camera lags or jerks. The fix is the right combination of Interpolation flag plus camera follow timing.

The Symptom

Player Rigidbody moves at constant velocity. Camera follows in Update, but visible position appears jittery. Especially noticeable at high framerates.

What Causes This

Physics fixed-step. Rigidbody updates at 50Hz (default). Render runs at 60+Hz. Without interpolation, the visible position snaps to the latest physics step.

Camera in Update. Update runs at render rate; reading non-interpolated Rigidbody position gives the same value for multiple frames, then jumps.

Camera in FixedUpdate. Smooths the read but the camera transform itself only updates at fixed-step, looking choppy at high render rates.

The Fix

Step 1: Enable Interpolation on the Rigidbody. In the inspector, set Interpolation to Interpolate.

Step 2: Follow in LateUpdate.

using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    [SerializeField] private Transform target;
    [SerializeField] private Vector3 offset = new(0, 5, -10);
    [SerializeField] private float smooth = 0.1f;

    private Vector3 vel;

    void LateUpdate()
    {
        Vector3 desired = target.position + offset;
        transform.position = Vector3.SmoothDamp(transform.position, desired, ref vel, smooth);
    }
}

LateUpdate runs after all Update + physics interpolation; reads the interpolated position cleanly.

Step 3: For Cinemachine, the same applies. CM cameras use Late Update by default. Just confirm the target Rigidbody’s Interpolation is set.

Step 4: Avoid mixing Update + FixedUpdate movement on the same body. If you call rb.MovePosition in FixedUpdate AND set transform.position in Update, the two fight.

Step 5: Lower fixed timestep if needed. If interpolation is not enough (very fast camera turns), set Time.fixedDeltaTime to 0.01 (100Hz). Reduces interpolation lag at the cost of physics CPU.

“Interpolate flag + LateUpdate. Two settings end Rigidbody-camera jitter for good.”

Related Issues

For Rigidbody teleport, see Teleport Jitter. For physics tunneling, see Physics Tunneling.

Interpolation = Interpolate. Camera in LateUpdate. Smooth follow.