I found the function what does exactly what I need: bool ARecastNavMesh::ProjectPointMulti(const FVector& Point, TArray<FNavLocation>& OutLocations, const FVector& Extent, float MinZ, float MaxZ, FSharedConstNavQueryFilter Filter, const UObject* QueryOwner) const There is the example of usage: void UEnvQueryGenerator_VolumetricGrid::NavigationRaycast(TArray<FNavLocation>& Points, const FVector& Position, FEnvQueryInstance& QueryInstance) const { const UObject* Querier = QueryInstance.Owner.Get(); const ANavigationData* NavData = nullptr; NavData = FEQSHelpers::FindNavigationDataForQuery(QueryInstance); const ARecastNavMesh* NavMeshData = Cast<const ARecastNavMesh>(NavData); if (NavMeshData == nullptr || Querier == nullptr) { return; } FSharedConstNavQueryFilter NavigationFilter = UNavigationQueryFilter::GetQueryFilter(*NavData, Querier, ProjectionData.NavigationFilter); TArray<FNavLocation> HitLocations; const FVector ProjectionExtent(ProjectionData.ExtentX, ProjectionData.ExtentX, (ProjectionData.ProjectDown + ProjectionData.ProjectUp) / 2); NavMeshData->ProjectPointMulti(Position, HitLocations, ProjectionExtent, Position.Z - ProjectionData.ProjectDown, Position.Z + ProjectionData.ProjectUp, NavigationFilter, Querier); for (int32 HitIdx = 0; HitIdx < HitLocations.Num(); HitIdx++) { Points.Add(HitLocations[HitIdx]); } }