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...
내비게이션 보이기
NavigationMap은 NavigationServer :ref:`RID<class_RID>`로 식별되는 NavigationServer의 추상 탐색 세계입니다.
지도는 탐색 메시를 사용하여 거의 무한한 수의 탐색 영역을 보유하고 연결하여 길 찾기를 위한 게임 세계의 횡단 가능한 영역을 구축할 수 있습니다.
지도에는 회피 에이전트가 포함될 수 있습니다. 충돌 회피는 지도에 있는 에이전트를 기반으로 계산됩니다.
참고
서로 다른 NavigationMap은 서로 완전히 격리되어 있지만 내비게이션 영역과 회피 에이전트는 서로 다른 지도 간에 전환할 수 있습니다. NavigationServer 동기화 시 스위치가 적용됩니다.
내비게이션 생성 (-navmesh)
기본적으로 Godot는 루트 뷰포트의 각 World2D 및 :ref:`World3D<class_World3D>`에 대한 탐색 맵을 생성합니다.
2D 기본 내비게이션 지도 RID는 노드를 상속하는 모든 :ref:`Node2D<class_Node2D>`에서 ``get_world_2d().get_navigation_map()``를 사용하여 얻을 수 있습니다.
3D 기본 내비게이션 지도 RID는 노드를 상속하는 모든 :ref:`Node3D<class_Node3D>`에서 ``get_world_3d().get_navigation_map()``를 사용하여 얻을 수 있습니다.
extends Node2D
func _ready() -> void:
var default_navigation_map_rid: RID = get_world_2d().get_navigation_map()
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid defaultNavigationMapRid = GetWorld2D().NavigationMap;
}
}
extends Node3D
func _ready() -> void:
var default_navigation_map_rid: RID = get_world_3d().get_navigation_map()
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid defaultNavigationMapRid = GetWorld3D().NavigationMap;
}
}
내비게이션 생성 (-navmesh)
NavigationServer는 특정 게임플레이에 필요한 만큼 많은 탐색 맵을 생성하고 지원할 수 있습니다. 추가 탐색 지도는 NavigationServer API를 직접 사용하여 생성 및 처리됩니다. 다양한 회피 에이전트 또는 배우 이동 유형을 지원합니다.
다양한 내비게이션 지도의 사용 예는 상속된 맞춤 타입을 지원하지 않습니다. 및 :ref:`doc_navigation_different_actor_locomotion`를 참조하세요.
각 내비게이션 지도는 대기 중인 변경 사항을 내비게이션 영역 및 회피 에이전트에 개별적으로 동기화합니다. 변경 사항을 수신하지 않은 내비게이션 지도는 처리 시간을 거의 또는 전혀 소비하지 않습니다. 내비게이션 지역 및 회피 에이전트는 단일 내비게이션 지도의 일부일 수 있지만 언제든지 지도를 전환할 수 있습니다.
참고
내비게이션 지도 스위치는 다음 NavigationServer 동기화 후에만 적용됩니다.
extends Node2D
func _ready() -> void:
var new_navigation_map: RID = NavigationServer2D.map_create()
NavigationServer2D.map_set_active(new_navigation_map, true)
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid newNavigationMap = NavigationServer2D.MapCreate();
NavigationServer2D.MapSetActive(newNavigationMap, true);
}
}
extends Node3D
func _ready() -> void:
var new_navigation_map: RID = NavigationServer3D.map_create()
NavigationServer3D.map_set_active(new_navigation_map, true)
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid newNavigationMap = NavigationServer3D.MapCreate();
NavigationServer3D.MapSetActive(newNavigationMap, true);
}
}
참고
NavigationServer2D API 또는 NavigationServer3D API로 생성된 내비게이션 맵 간에는 차이가 없습니다.