So this block of code does nothing at all because SetPath don't work: Code (CSharp): NavMeshPath NavMeshPath = new NavMeshPath(); if (!NPCBrain.Agent.CalculatePath(result[current].pos, NavMeshPath)) { Debug.Log("Path not found from: " + NPCBrain.transform.position + " to " + result[current].pos); NavMeshPath = new NavMeshPath(); var data = GameObject.FindObjectOfType<NavMeshSurface>().navMeshData; NavMesh.RemoveAllNavMeshData(); var res = NavMesh.AddNavMeshData(data); if (!NavMesh.SamplePosition(NPCBrain.transform.position, out NavMeshHit hit1, 10, -1) | !NavMesh.SamplePosition(result[current].pos, out NavMeshHit hit2, 10, -1)) { Debug.Log("Could not sample to objective"); } else { if (!NavMesh.CalculatePath(hit2.position, hit1.position, -1, NavMeshPath)) { Debug.Log("Path not found Anyways"); Abort = true; } else { Array.Reverse(NavMeshPath.corners); } } } bool setpath = NPCBrain.Agent.SetPath(NavMeshPath);//none of these work NPCBrain.Agent.path = NavMeshPath; NPCBrain.Agent.SetDestination(NavMeshPath.corners.Last());//besides this one that defats the purpose of everything above The idea is to try to path to the target, and if it does not work, path from target to me (sometimes work when the first didn't) to try to get my actors actually moving. Except SetPath don't work. It does set the path, but hasPath stays returning false and the agent don't move. Also, needing to re set the NavMesh data every frame is bothersome, it somehow just don't work otherwise.