Dear all, Context (not really relevant to the problem, just in case you're wondering): I'm trying to implement a networked multi-user scenario that includes physics simulation. Each client simulates the world locally, sends its input to the server and receives the inputs of other clients. Once the input of the other clients arrives, it has to roll back in time to a previous state (because it used prediction to hide latency) and simulate again with the correct inputs. The idea is to send only the inputs over the network instead of having to synchronize the internal state of the simulation. For that to work, I need to be able to fully capture and restore the physics engine's internal state. Specifically, I only care about the position, rotation, velocity and angular velocity of each Rigidbody. Getting and setting the velocity and angular velocity works fine. However, I'm unable to set a Rigidbody's position and rotation precisely. Something strange happens here: Apparently, after setting rigidbody.position = x, the position isn't precisely x (same for rotation). Instead, there's a tiny difference that's only notable when you use Equals and not the overloaded == operator. That tiny difference quickly becomes a huge difference when collisions take place, and thus the clients' physics simulations diverge. An important thing to notice: It's most noticeable when the Rigidbody has at least 2 colliders. With only one collider, it seems to work fine as long as there are no collisions. While collisions take place (e. g. object is lying on the floor), there's always trouble. I already tried setting transform.position and transform.rotation followed by a call to Physics.SyncTransforms(), but to no avail. I'd be grateful for any suggestions.