Based on the comments above, the followed object "Current" is only moving in FixedUpdate.
By default, FixedUpdate runs 50 times per second. In-between FixedUpdates, Unity renders as many frames as it can, each time calling Update, LateUpdate, etc.
Because the rendered framerate is usually not a perfect multiple of the FixedUpdate rate, this can cause a beat frequency between the updates which is perceived as a stutter.
For example, if you're rendering at 60 fps, but the FixedUpdate is running at 50 Hz, your frames might look like this:
Frame 1 2 3 4 5 6 7 8 9 10 11 12
FixedUpdate 1 2 3 4 5 6 7 8 9 10
Sometimes two Update frames get rendered off of the same FixedUpdate state, because less than 0.02s have elapsed since the last FixedUpdate. Visually, everything hesitates a beat once every 6 frames, then runs a little fast to catch up.
The situation is reversed if you're running below 50 fps, say at 30 fps:
Frame 1 2 3 4 5 6
FixedUpdate 1 2 3 4 5 6 7 8 9 10
In this case, frames 2, 3, 5, and 6 have two FixedUpdates' worth of movement behind them, while there's only one FixedUpdate between frames 3 & 4, causing the apparent motion to slow down for one frame in every 5.
This is usually resolved using interpolation.
If you're moving your object using velocities on a Rigidbody, you can tell Unity to handle this for you by setting its Interpolation mode to either:
- interpolate (smooth, at the cost of 1 physics frame of latency) or
- extrapolate (maximum responsiveness, but may overshoot & correct due to mis-prediction)
Automagically, the movement of this object will now appear continuous, no matter your framerate.
You can also implement this yourself by adding a separate visual object that follows the (invisible) Current object in Update or LateUpdate, using Time.deltaTime as a blend weight to interpolate or extrapolate its position smoothly.
Or, if keeping the gameplay in FixedUpdate isn't important in this case (say, you're running at a locked framerate, or this is a non-interactive sequence in the game) you can change the object itself to move in Update so it changes its position with every rendered frame. (The reason this is usually avoided is that, if your framerate is variable, you can get inconsistent results from gameplay in Update, causing hard-to-track-down bugs that depend on precise timings)
For more insight on why the updates are split this way and how you can interpolate the visible game state between frames, check out this article on fixed timesteps.