Quick answer: Set the Rigidbody to Interpolate, and move camera-follow code to LateUpdate — it must read the interpolated transform, not the raw physics one.
The player Rigidbody has Interpolation on, but the view still stutters. The camera follows in FixedUpdate, reading the un-interpolated physics position.
How Interpolation Works
Physics runs at a fixed step (e.g. 50 Hz). Interpolation smooths the visible transform between physics steps so it’s correct every render frame. But the smoothing is applied after FixedUpdate — visible by Update/LateUpdate.
Camera Follow in LateUpdate
void LateUpdate()
{
transform.position = target.position + offset;
}
LateUpdate runs after Update and after interpolation is applied. The camera reads the smooth transform — no stutter.
Don't Follow in FixedUpdate
Camera follow in FixedUpdate reads the stepped, un-interpolated position. At 50 Hz physics and 144 Hz display, the camera jumps in physics-step increments — the stutter you see.
Body Settings
- Interpolate: smooth toward the latest physics state. Use for the player.
- Extrapolate: predict ahead — can overshoot on collisions; usually avoid.
- None: visible at physics rate — only fine if physics rate == display rate.
Verifying
Move the player. The camera tracks smoothly at any display refresh rate. No micro-stutter even at 144+ Hz.
“Interpolate the body, follow in LateUpdate. The camera must read the smoothed transform.”
Cinemachine handles this correctly by default — if you’re hand-rolling camera follow, LateUpdate is the rule.