I have read countless posts on this topic but i still cannot resolve my issue.
When i rotate my player, the player itself turns smoothly but the background does not, there is a noticeable jitter on background objects.
I have a rigidbody character which is controlled by joystick input, the inputs are received in Update(), the player movement including rotation is done in FixedUpdate().
Cinemachine is used for the camera. The MainCamera uses Update Method = Fixed Update and Blend Method = Fixed Update. The player will jitter if i do not set them like this.
The VirtualCamera has a Follow and LookAt targets of game object “Follow Target”. This game object is a child of the main player.
I created a new scene and put the bare minimum in it to reproduce the issue, r9c7wt
Notes:
I put the movements logic in FixedUpdate() as we are dealing with Rigidbody and physics.
The Rigidbody uses Interpolate.
Does the “Follow Target” being a child of the Player object (which has the Rigidbody component) a potential cause of the issue? If so, how can i get the camera to follow the player smoothly as well as have the background smooth. The player is based on FixedUpdate but I think the camera needs to be based on Update or LateUpdate. But i can’t have both???
An update. The issue appears to be that the player controls are in FixedUpdate which is at 50fps, the camera is looking at a child of the player object (which has the rigidbody), therefore the camera is also at 50fps. I can detach the camera from the player and make it look at another gameobject, the camera fps then is 150fps. Is it actually possible for a rigidbody player to be able to move smoothly (based on 50fps) while the camera is at 150fps? I have tried Interpolating on the rigidbody but that does not resolve the issue. I have also changed the FixedUpdate to be 100fps, which improves the camera looking at child object of player, but the player has rapid jitter while walking left and right.
Sorry for the slow response.
The best way to get smooth movement when using rigid bodies is to make all input control physics forces that you apply to the RigidBody in FixedUpdate (don’t modify any transforms directly - let the physics system do the work). Then, turn on interpolation for the RigidBody. What this does is to interpolate the transform between physics frames so the when the render frame happens, smooth movement is preserved. Having your LookAt target be a transform child of the RigidBody is fine in this situation, its position will be interpolated along with the parent’s.
To test this, you should be able to point a CM camera at it with CM Brain’s update mode set to Smart Update. If you play the scene and look at the vcam’s inspector while the brain is in smart update and move the player around, you should see the vcam updating in LateUpdate:

This means that the RigidBody’s position is being correctly interpolated, and that the camera is following the interpolated position. As a result the camera will appear smooth.