Recientemente me he encontrado con este problema y me ha vuelto loco por casi un día, a continuación dejo un vídeo para que se entienda mejor el problema.
Contexto: El personaje tiene un componente NavMeshAgent, cuando el personaje entra en la caja cambio la posición del personaje a una parte de la base militar para que esté aislado de los enemigos.
El caso que al querer salir de la caja, al querer cambair la posición del personaje al lado de la caja el NavMeshAgent de este intenta hacer la ruta dentro de la base hacia la caja pero a veces se queda a medio camino.
Si quieres cambiar la posición de un NavMeshAgent directamente, te recomiendo antes desactivarlo, luego cambias la posición y finalmente lo activas de nuevo.
GameObject personaje = GameObject.Find("personaje");
GameObject caja = GameObject.Find("caja");
NavMeshAgent personaje_agent = personaje.GetComponent<NavMeshAgent>();
personaje_agent.enabled = false;
personaje.transform.position = caja.transform.position;
personaje_agent.enabled = true;