Quick answer: The confining polygon has too many vertices — usually from auto-generated tile composite colliders. Hand-author a separate, simplified polygon with 8–20 vertices for the camera bounds, click Invalidate Cache + Bake on the CinemachineConfiner2D, and the jitter resolves.
Here is how to fix Unity Cinemachine 2D Confiner producing visible camera jitter at tile boundaries. The camera follows the player smoothly until it nears a confining edge, then judders. The confining polygon’s vertex density is the issue: hundreds of tiny segments produce many resolution candidates that bounce per frame.
The Symptom
Camera follows player smoothly in open space. Approaches a level edge, then visibly jitters along the bound. Worse on grids of small tiles. Invalidate Cache + Bake only briefly improves it.
What Causes This
Composite Collider produces many vertices. Tile-based collision compositing produces polygons with dozens of edges per tile boundary; the resolver chooses different ones across frames.
No baked cache. Without baking, the resolver computes per-frame; expensive and inconsistent.
Damping interaction. Damping smooths motion but the resolved center bounces between adjacent polygon edges, producing oscillation that damping cannot cancel.
Lens settings change. If your camera changes orthographic size at runtime, each new size needs a separate bake.
The Fix
Step 1: Hand-author a simplified bounding polygon. Create a separate empty GameObject named CameraBounds. Add a PolygonCollider2D. Set isTrigger = true. Trace the playable area with 8–20 vertices, ignoring the visual tile detail. Use this for the Confiner’s bounding shape, not the world collider.
Step 2: Bake the cache.
// CinemachineConfiner2D inspector:
// Bounding Shape 2D = CameraBounds (the new simple polygon)
// Click Invalidate Cache
// Click Bake
Bake builds confined regions per orthographic size; cached results are stable.
Step 3: Tune damping. Open the Cinemachine virtual camera, expand Body. Set Damping X and Y to 0.3–0.5 for snappy follow without overshoot. Higher damping makes the jitter more visible because it tries to smooth between bouncing positions.
Step 4: For multiple zoom levels, bake all. If your game switches camera ortho size, the Confiner needs each size baked. Pre-warm at level start:
var confiner = vcam.GetComponent<CinemachineConfiner2D>();
confiner.InvalidateCache();
// Bake happens at runtime when camera ortho size changes
Step 5: Verify with Scene gizmos. Select the Confiner; the polygon and confined regions render as overlay. If the polygon looks like a thousand tiny edges, that is the problem — replace with the simpler polygon.
For 3D Confiner
CinemachineConfiner uses a Collider (3D). The same principles apply: simplify the bounds mesh. Use a low-poly box or sphere for camera bounds, not the play-space collision.
“A small polygon with few vertices, baked, with reasonable damping. The camera glides along the edges.”
Related Issues
For Cinemachine impulse, see Cinemachine Impulse Listener. For camera jitter, see Cinemachine Camera Jitter.
Simple polygon. Bake cache. Damping 0.3-0.5. Edges feel solid.