It snaps. Smooth it with one call.

The problem
It jumps straight there.
protected override void OnUpdate(){ float target = IsCrouching ? 32f : 64f; EyeHeight = target;}
Crouch and the camera teleports 32 units down in a single frame.
The fix
Close part of the gap each frame.
LerpTo moves a value a fraction of the way toward its target, every frame.
current→LerpTo( target, t )
The fix in code
One call.
protected override void OnUpdate(){ float target = IsCrouching ? 32f : 64f; EyeHeight = EyeHeight.LerpTo( target, Time.Delta * 10f );}
Each frame closes part of the gap. Raise the 10 to make it snappier, lower it to make it floatier.
The rule
Don't snap. Lerp.
- Smooth a value
- x.LerpTo( target, t )
- Speed
- Time.Delta × 10
- Snappier
- raise the 10