Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Usando NavigationMaps

../../_images/nav_maps.png

Um NavigationMap é um mundo de navegação abstrato no NavigationServer identificado por um RID do NavigationServer.

Um mapa pode conter e conectar um número quase infinito de regiões de navegação com malhas de navegação para construir as áreas atravessáveis de um mundo de jogo para a busca de caminhos.

Um mapa pode conter agentes de desvio. O desvio de obstáculos (collision avoidance) será calculado com base nos agentes presentes no mapa.

Nota

Diferentes NavigationMaps são completamente isolados uns dos outros, mas as regiões de navegação e os agentes de desvio podem alternar entre mapas diferentes. As alternâncias se tornarão eficazes na sincronização do NavigationServer.

Mapas de navegação padrão

Por padrão, o Godot cria um mapa de navegação para cada World2D e World3D da viewport raiz (root viewport).

O RID do mapa de navegação padrão 2D pode ser obtido com get_world_2d().get_navigation_map() a partir de qualquer nó que herde de Node2D.

O RID do mapa de navegação padrão 3D pode ser obtido com get_world_3d().get_navigation_map() a partir de qualquer nó que herde de Node3D.

extends Node2D

func _ready() -> void:
    var default_navigation_map_rid: RID = get_world_2d().get_navigation_map()

Criando novos mapas de navegação

O NavigationServer pode criar e suportar quantos mapas de navegação forem necessários para uma jogabilidade específica. Mapas de navegação adicionais são criados e manipulados usando a API do NavigationServer diretamente, por exemplo, para suportar diferentes tipos de locomoção de atores ou agentes de desvio.

Para exemplos de usos de diferentes mapas de navegação, consulte Suporte a diferentes tipos de agentes (actors) e Suportar diferentes locomoções de atores.

Cada mapa de navegação sincroniza individualmente as alterações enfileiradas em suas regiões de navegação e agentes de desvio. Um mapa de navegação que não recebeu alterações consumirá pouco ou nenhum tempo de processamento. As regiões de navegação e os agentes de desvio só podem fazer parte de um único mapa de navegação, mas podem mudar de mapa a qualquer momento.

Nota

A mudança de mapa de navegação entrará em vigor apenas após a próxima sincronização do NavigationServer.

extends Node2D

func _ready() -> void:
    var new_navigation_map: RID = NavigationServer2D.map_create()
    NavigationServer2D.map_set_active(new_navigation_map, true)

Nota

Não há diferença entre os mapas de navegação criados com a API do NavigationServer2D ou com a API do NavigationServer3D.