There are a bunch of threads on the inherent jitter problem in unity. The real big demons are Time.deltaTime and fixed update.
almost all displays strobe an image at a fixed rate. let’s say 60hz, but it does vary on every device slightly. nothing you do will change this.
if you simulate a duration more or less than 1/60 seconds, things will move a little too far or not far enough… this is visible as jitter.
unity DOES NOT provide a stable delta time even when operating under vsync. Time.unscaledDeltaTime is the duration since the last time Update() was called, pretty much. This fluctuates and is NOT the same as the duration a frame is displayed- and therefore causes jitter.
fixedUpdate, interpolation and extrapolation all compound the problem.
I’ve done a bunch of crazy workarounds to get around these problems in my game. There is a thread here with a bunch of info: Time.deltaTime Not Constant: VSync CameraFollow and Jitter
summary:
for me, i use vsync and calculate my own deltaTime that is quantized to the display’s refresh rate. Physics2D.autoSimulate is off, as are interpolation and extrapolation. I do not use unity’s animators, particles, etc., either as they all use unity’s jittery deltaTime internally. I do not use fixed update. I do call Physics2d.Simulate once a frame with my quantized deltatime from my own Update loop, and use my own procedural animation, camera and particle systems that use my deltaTime. This is what you have to do to fix jitter in unity currently.