Project Point to Navigation works fine.
UNavigationSystemV1* NavSys = FNavigationSystem::GetCurrent<UNavigationSystemV1>(GetWorld());
const FNavAgentProperties& AgentProps = Controller->GetNavAgentPropertiesRef();
if (NavSys != nullptr)
{
FNavLocation ProjectedLocation;
NavSys->ProjectPointToNavigation(Event.Location, ProjectedLocation, FVector(500.0f, 500.0f, 300.0f), &AgentProps);
NearestMovableLocation = ProjectedLocation.Location;
}
Note that the larger the radius you give it, the more impactful this call will be on CPU.
It’s a good idea to build your levels so that you don’t need to use this with a huge radius. 500x500x300 I would think should be more th an enough for most anything.