I have some code which moves a transform with a rigidbody attached. It seems to work fine, and I can move it to a target using a PID controller which calls AddForce() and all is working OK. But if I also perform a few AddForceAtPosition()'s then I start to see a drift, and when I move it to what should be the rest location, it arrives a little bit off to one side, as if it's developed a local transform or an offset in some way. Any suggestions on what's going on here? I am calling rigidbody.AddForce(), rigidbody.AddForceAtPosition(), and I also directly assign values to transform.rotation. Can that be the culprit? Perhaps rigidbody.MoveRotation or rigidbody.rotation are more appropriate..? Is there a difference between transform.rotation and rigidbody.rotation besides performance and colliders, which could result in a translational offset?