Quick answer: Godot NavigationAgent3D refusing to path to a target? The target may lie outside the navigation mesh — project to the closest point on the navmesh before pathing.

An NPC is told to walk to a point, but is_navigation_finished() returns true immediately and the agent never moves. The target is off the mesh.

Project Onto the Navmesh

var map = agent.get_navigation_map()
var closest = NavigationServer3D.map_get_closest_point(map, target)
agent.target_position = closest

This snaps targets that would otherwise be unreachable (off-mesh, in a wall, on a different region).

Path Postprocessing

NavigationAgent has path_postprocessing. The default Corridorfunnel smooths the path; Edgecentered hugs the navmesh boundary. Pick what fits your motion.

Region Membership

If the target is on a navmesh region the agent can’t cross (different navigation layers), pathing fails. Check the agent’s navigation_layers bitmask matches the region.

Verifying

Targets clicked anywhere — including in geometry — produce a valid path to the nearest reachable point, and the agent walks to it.

“Off-mesh targets fail silently. Project to the navmesh before pathing.”

Visualize the path with NavigationServer3D.map_get_path — seeing the polyline tells you instantly whether the navmesh is the problem.