I calculate my movement in FixedUpdate using the following:
Vector3 movement = _agent.speed * Time.fixedDeltaTime * transform.forward.normalized;
_rigidbody.MovePosition(transform.position + movement);
_agent.speed is 10. _rigidbody.velocity.magnitude is 10. However, if I sample the position every second, it gives a value around 7. I believe my sampling is correct, because when I move using the navmesh, it shows a speed of 10. My rigid body is marked as kinematic.
Is this expected? Why would MovePosition move slower?
New information: When I disable the nav mesh agent, the speed goes up to normal. My hack is to disable the nav mesh agent when switched to manual control, and re-enable it for auto control. Any ideas why the nav mesh would slow down movement by MovePosition? In other weirdness, on a small section of my nav mesh, it doesn’t slow down. In the fast sections, the height is marginally higher (-0.083 vs -0.115). The box colliders on the ground are exactly the same, so I’m not sure why the heights are different.