I think you really do need to stuff like AddForce, AddTorque, etc. from FixedUpdate, rather than Update.
Otherwise, I think the behaviour will vary depending on your FPS, & maybe other problems.
I thiiink reading stuff from Input, like GetKey etc should still happen in Update, and you should cache the values for FixedUpdate to process. I’ve not experimented a lot, but this is the way I always do it.
I’m not sure manually setting the rb.angularVelocity in ResetAndToggleParticles is “compatible” with using AddTorque (should you be adding a counter-torque instead to achieve the same result?).
Same with manually setting transform.rotation in InterpolateRotation. I think the rigidbody would want to be kinematic while you’re doing stuff like that to it. (I think MoveRotation will do what you want for a kinematic rigidbody, and is preferable to setting the transform rotation here)?
I think I’d get everything except reset working smoothly from FixedUpdate, and then fix reset as a separate task.
I wonder if you can lock out AddForce etc while you’re resetting, and make the rigidbody kinematic for the duration of the reset.
Kinematic objects not colliding << This post I saw earlier today has a handy diagram about kinematic vs non-kinematic/ what’s OK and what’s not OK to do to a rigidbody/ rigidbody transform etc.
I know when I’m using cinemachine cameras, visual jitter is affected by the UpdateMethod I specify - someone else is in charge of cameras in my game though, sorry, it’s not my area of expertise at all:).