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 = closestThis 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.