As of Unity 5, NavMeshAgent seems to ignore the current position of the object it’s attached to, instead updating its position based on where it thinks it would be if it was the only thing controlling the object’s position by moving it directly.
(the cylinder is where NavMeshAgent thinks it is)
This is obviously unworkable for a million different reasons. What can I do about this? Is there some way to reactivate the old behavior from Unity 4 where it calculated its position based on where it actually was, or failing that, some way to set its position manually?
You will have to use script to control the navAgent position. First disable NavAgent updateRotation and Position, then in the Update take control over NavAgent transform.