Objects sitting on other objects not blocking navmesh

I have a foundation object. It updates the graph using a GraphUpdateObject. The height of the foundation (which has about 1.2 above ground) is smaller than the step height of my agents, so they can step over it.

I have a wall. This has navmesh cut on it as a rectangle the size of the wall.

Sometimes, if I put the wall on the foundation, as shown in the pic below, the agents can still plot a path through the wall. This changes if I extend the height of the navmesh cut to be the bottom of the foundation.

It is like the foundation isn’t considered as it is below the agent step height but then this prevents the wall cutting into the navmesh when put on the foundation?

Note that sometimes it works, it depends where on the Navmsh I put my foundation.

Any ideas would be great. 99% it is something I am messing up…

I didn’t quite understand what was going on in the image, but in any case: the NavmeshCut only looks at the final generated navmesh. It will cut out its own shape from the final navmesh and nothing more.

If you want a more accurate update I would recommend not using navmesh cuts and instead doing the same thing as you do for the foundation: include it in a GraphUpdateObject.

Sorry, reading back it does sound a little confused.

What it boils down to is that i can place 4 walls around me, joining up, and the agents can path-find a way in under the wall (I say under as if i increase the size of the navmesh cut rectangle on the wall to reach the floor it doesn’t happen).

The walls sit on the foundation, so are about 1.2 - 2 off the ground. The foundations themselves update the navmesh using a GraphUpdateObject.

The walkable height of the agent is set to 2.3, so they should not be able to walk under the wall. The wall is only 0.2 wide though; could this have an effect?


So navmesh cuts just cut the navmesh exactly with their shape. They do not use things like the character radius nor the agent height. They cut the navmesh only inside their specified volume.

If you are already using GraphUpdateObjects to update the navmesh for the foundation, why not use graph update objects for the walls as well? Though if you place multiple walls at the same time you may want to combine them to a single update for increased performance.
If you include the walls in the normal rasterization process then the character height and radius will be taken into account.

I implemented this yesterday by making all my building elements use the GraphUpdateObjects approach and it works great, thanks!

1 Like