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.
Checking the stable version of the documentation...
Conectando malhas de navegação
Diferentes NavigationMeshes são mescladas automaticamente pelo NavigationServer quando pelo menos duas posições de vértices de uma aresta se sobrepõem exatamente.
Para conectar ao longo de distâncias arbitrárias, consulte Usando NavigationLinks.
O mesmo vale para múltiplos recursos NavigationPolygon. Desde que os pontos de seus contornos se sobreponham exatamente, o NavigationServer os mesclará. Os contornos de NavigationPolygon devem ser de recursos NavigationPolygon diferentes para se conectarem.
Contornos sobrepostos ou que se cruzam no mesmo NavigationPolygon farão com que a criação da malha de navegação falhe. Contornos sobrepostos ou que se cruzam de diferentes NavigationPolygons frequentemente falharão em criar as conexões de aresta da região de navegação no NavigationServer e devem ser evitados.
Aviso
Exatamente significa exatamente para a mesclagem de posições de vértices. Pequenos erros de ponto flutuante (float) que acontecem regularmente com malhas importadas impedirão uma mesclagem de vértices bem-sucedida.
Alternativamente, as malhas de navegação não são mescladas, mas ainda assim são consideradas como conectadas pelo NavigationServer quando suas arestas são quase paralelas e estão dentro de uma distância mínima uma da outra. A distância de conexão é definida pelo edge_connection_margin para cada mapa de navegação. Em muitos casos, as arestas da malha de navegação não conseguem se conectar adequadamente quando se sobrepõem parcialmente. É melhor evitar qualquer sobreposição de malha de navegação a todo custo para obter um comportamento de mesclagem consistente.
Se a depuração de navegação estiver ativada e o NavigationServer ativo, as conexões de malha de navegação estabelecidas serão visualizadas. Veja Ferramentas de depuração de navegação para mais informações sobre as opções de depuração de navegação.
O edge_connection_margin padrão para 2D pode ser alterado nas ProjectSettings em navigation/2d/default_edge_connection_margin.
O edge_connection_margin padrão para 3D pode ser alterado nas ProjectSettings em navigation/3d/default_edge_connection_margin.
O valor da margem de conexão de aresta de qualquer mapa de navegação também pode ser alterado em tempo de execução com a API do NavigationServer.
extends Node2D
func _ready() -> void:
# 2D margins are designed to work with 2D "pixel" values.
var default_map_rid: RID = get_world_2d().get_navigation_map()
NavigationServer2D.map_set_edge_connection_margin(default_map_rid, 50.0)
using Godot;
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
// 2D margins are designed to work with 2D "pixel" values.
Rid defaultMapRid = GetWorld2D().NavigationMap;
NavigationServer2D.MapSetEdgeConnectionMargin(defaultMapRid, 50.0f);
}
}
extends Node3D
func _ready() -> void:
# 3D margins are designed to work with 3D world unit values.
var default_map_rid: RID = get_world_3d().get_navigation_map()
NavigationServer3D.map_set_edge_connection_margin(default_map_rid, 0.5)
using Godot;
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
// 3D margins are designed to work with 3D world unit values.
Rid defaultMapRid = GetWorld3D().NavigationMap;
NavigationServer3D.MapSetEdgeConnectionMargin(defaultMapRid, 0.5f);
}
}
Nota
Alterar a margem de conexão de aresta acionará uma atualização completa de todas as conexões de malha de navegação no NavigationServer.