In my minimal recreation, I’m on a NavMesh island with no access other than the one link, and “autoTraverseOffMeshLinks” is set to false on the NavMeshAgent component. I have a simple branch that checks a bool that I set manually, and a seek action. When it first fires, the agent approaches the OffMeshLink and waits as expected. Moving that GameObject didn’t cause it to ignore the auto traverse. Similarly, when I set my player as the Gameobject, same result. However, the moment I set the arbitrary bool to false, and the branch fails, the agent immediately teleports across the OffMeshLink.
Updating this as I’m looking into it. It seems calling the ResetPath() function causes this to happen. It’s called in the OnStop() method for the task.
This is pretty critical for my core gameplay loop, so I’m going to try and fix it. When I find something I think works and doesn’t ruffle too many feathers, I’ll post it. I still welcome any developer input on this.
Update: I found a way that I think will work for me for now. Just before the path is reset, I warp the agent to it’s current position:
Hello and sorry for the late reply.
Thank you for your details provided, as well as the smart hack/fix 🙂
I don’t see any problems with doing that, thus I will also add it officially for the next version update (in all navmesh related actions) so that you don’t have to worry about adding this every time you update 🙂
I will however also try to find an alternative solution if possible.