Transform.Position vs Rigidbody.Position

Hello everyone, I’ve got a question on using Transform.Position vs Rigidbody.Position, since it seems that calling one or the other results in different positions for an object when set. So I’m wondering if setting Rigidbody.Position through script only updates during the next FixedUpdate() instead of whenever it was called.

What I’m seeing:
I’ve got a script that, when detecting an imminent collision, sets the position of the “shell” to the impact point of the colliding object (this collision check occurs in Update() ). What I’m seeing is that when using Transform.Position, the shell moves to the spot immediately, however using Rigidbody.Position does not (the shell stays in some other position).

So I’m just curious as to what causes the discrepancy between positions.

Any thoughts are appreciated, thank you for reading.

Changes to Rigidbody.position are only applied to the transform at the end of the physics step.