The diagram shows that WaitForFixedUpdate happens before the internal physics update but after FixedUpdate. But from my tests, this is not true. I tried to use rigidbody.MovePosition () in a WaitForFixedUpdate coroutine but it always happens one frame after, as if it had run after the physics update
Yes, it seems like a bug. The order clearly is:
- FixedUpdate
- Internal physics update
- WaitForFixedUpdate
- Update
MovePosition will take immediate effect on rigidbody.position, however that position is applied to transform.position during the internal physics update. So movement applied in a coroutine will take effect after the next physics step.