Quick answer: The Rigidbody moves in FixedUpdate but the camera updates in LateUpdate by default. The frequency mismatch causes the camera to sample positions between physics steps. Set the CinemachineBrain Update Method to FixedUpdate or enable Rigidbody interpolation.

Here is how to fix Unity Cinemachine camera jitter. Your Cinemachine virtual camera follows the player, but the output jitters or stutters. The character moves smoothly on its own, yet the camera view trembles. This is almost always a timing mismatch between how the target moves and when the camera reads that position.

The Symptom

The player moves smoothly when you lock the camera, but with Cinemachine tracking enabled the scene shakes. Static backgrounds and tiles vibrate. The effect worsens at certain frame rates and is most visible on pixel-art or tile-based games where sub-pixel shifts are obvious.

What Causes This

1. Physics target with wrong Brain update method. Your target moves via Rigidbody in FixedUpdate (default 50Hz), but CinemachineBrain reads position in LateUpdate (every rendered frame). Between physics ticks the position is stale, then jumps forward, producing jitter.

2. Missing Rigidbody interpolation. Without interpolation the Rigidbody's transform only updates on physics ticks. Between ticks the position freezes then snaps, and the camera faithfully reproduces those snaps as stutter.

3. Damping too low or zero. Zero damping locks the camera rigidly to the target. Any micro-variation in position from physics solving gets amplified as visible shake. Very high damping causes overcorrection lag instead.

4. Mixed movement sources. If horizontal movement uses Rigidbody but vertical uses Transform (or vice versa), the camera sees inconsistent update timing across axes, blending them into compound jitter.

The Fix

Step 1: Set the Brain update method to match your movement.

using UnityEngine;
using Unity.Cinemachine;

public class BrainSetup : MonoBehaviour
{
    void Start()
    {
        var brain = Camera.main.GetComponent<CinemachineBrain>();
        // Use FixedUpdate for Rigidbody-driven targets
        brain.UpdateMethod = CinemachineBrain.UpdateMethods.FixedUpdate;
    }
}

Step 2: Enable interpolation on the follow target.

var rb = target.GetComponent<Rigidbody>();
rb.interpolation = RigidbodyInterpolation.Interpolate;

// For 2D:
// GetComponent<Rigidbody2D>().interpolation =
//     RigidbodyInterpolation2D.Interpolate;

Step 3: Apply moderate damping to the virtual camera.

var follow = vcam.GetComponent<CinemachineFollow>();
if (follow != null)
{
    // Moderate damping smooths micro-jitter
    follow.TrackerSettings.PositionDamping =
        new Vector3(1f, 0.5f, 1f);
}

Related Issues

If the issue is surface flickering rather than camera shake, see shadow flickering and z-fighting. If you load Cinemachine configurations via Addressables and get errors, check Addressables failed to load asset.

FixedUpdate target plus LateUpdate camera equals jitter. Every single time.