Create a smooth camera without jittering/flickering in 2D

I searched a lot and I can’t find the answers, I have a Cinemachine camera, my character and a parallax, my parallax moves smoothly in the Scene view so I can conclude that the problem is in the camera . If I remove the cinemachine and just make the camera follows the player, It jitters with it and the issue is “gone” : Imgur: The magic of the Internet

but if I smooth the movement, with Cinemachine or not, the parallax starts flickering because of the camera and the player movement: Imgur: The magic of the Internet

I’ve already tried:

 rb2d.MovePosition(rb2d.position + movementVector * speed * Time.smoothDeltaTime);
//transform.position += new Vector3(input_x, input_y, 0).normalized * speed * Time.deltaTime;
//rb2d.velocity = new Vector2(Mathf.Lerp(0, input_x * speed, 0.8f),Mathf.Lerp(0, input_y * speed, 0.8f)).normalized;

rb2d:

  • Interpolate/extrapolate

PlayerMovement:

  • FixedUpdate
  • deltaTime
  • fixedDeltaTime
  • smoothedDeltaTime

CinemachineBrain:

  • UpdateMethod

How can I make the camera moves smoothly with the player, and my parallax works fine?

My guess is that your character is moving in a jittery way. Locking the target to the character hides the jitter because the camera effectively jitters along in lockstep with the choppy motion.

Cinemachine damping can expose character translation issues because it smooths the camera movement out which reveals the jitter.

How are you translating the character? Fixed update? Interpolation? Without seeing what’s going on that’s my best guess. We’ve had a lot of ‘Cinemachine jitters’ but in the bast majority of cases it’s actually the player that’s jittering.

On the Cinemachine Brain, there’s a few different update option methods. Try those first as it’s easiest and they can often reveal what the real issue is.

I was trying to track a physics driven object, so changing Update Method to Fixed Update helped.

Changing the interpolation in rigidbody2D component work for me.