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...
편집기 실행하기
NavigationRegions는 NavigationServer에 있는 탐색 **지도**의 **지역**을 시각적으로 표현한 노드입니다. 각 NavigationRegion 노드는 탐색 메시 데이터에 대한 리소스를 보유합니다.
2D 및 3D 버전은 각각 NavigationRegion2D 및 :ref:`NavigationRegion3D<class_NavigationRegion3D>`로 제공됩니다.
개별 NavigationRegions는 2D NavigationPolygon 또는 3D NavigationMesh 리소스 데이터를 NavigationServer에 업로드합니다. NavigationServer 맵은 이 정보를 경로 찾기를 위한 결합된 탐색 맵으로 변환합니다.
씬 트리를 사용하여 탐색 영역을 생성하려면 NavigationRegion2D 또는 NavigationRegion3D 노드를 씬에 추가하세요. 모든 지역이 작동하려면 탐색 메시 리소스가 필요합니다. 탐색 메시를 만들고 적용하는 방법을 알아보려면 :ref:`doc_navigation_using_navigationmeshes`를 참조하세요.
NavigationRegions은 global_transform 변경 사항을 NavigationServer의 지역에 자동으로 푸시하여 플랫폼 이동에 적합하게 만듭니다. NavigationServer는 개별 영역의 탐색 메시가 충분히 가까워지면 연결을 시도합니다. 자세한 내용은 :ref:`doc_navigation_connecting_navmesh`를 참조하세요. 임의의 거리에 걸쳐 NavigationRegions를 연결하려면 :ref:`doc_navigation_using_navigationlinks`를 참조하여 ``NavigationLinks``를 만들고 사용하는 방법을 알아보세요.
경고
NavigationRegion 노드의 변환을 변경하면 NavigationServer의 영역 위치가 업데이트되지만 배율을 변경하면 업데이트되지 않습니다. 내비게이션 메시 리소스에는 배율이 없으며 소스 지오메트리의 배율이 변경되면 완전히 업데이트되어야 합니다.
지역은 활성화/비활성화될 수 있으며 비활성화된 경우 향후 경로 찾기 쿼리에 기여하지 않습니다.
참고
지역이 활성화/비활성화되면 기존 경로가 자동으로 업데이트되지 않습니다.
애니메이션 만들기
새로운 NavigationRegion 노드는 2D/3D 차원에 대한 기본 세계 탐색 지도에 자동으로 등록됩니다.
그러면 지역 RID는 ``get_rid()``를 사용하여 NavigationRegion 노드에서 얻을 수 있습니다.
extends NavigationRegion2D
var navigationserver_region_rid: RID = get_rid()
public partial class MyNavigationRegion2D : NavigationRegion2D
{
public override void _Ready()
{
Rid navigationServerRegionRid = GetRid();
}
}
extends NavigationRegion3D
var navigationserver_region_rid: RID = get_rid()
public partial class MyNavigationRegion3D : NavigationRegion3D
{
public override void _Ready()
{
Rid navigationServerRegionRid = GetRid();
}
}
NavigationServer API를 사용하여 새 지역을 생성하고 기존 지도에 추가할 수도 있습니다.
NavigationServer API를 사용하여 지역을 직접 생성한 경우 탐색 지도를 수동으로 할당해야 합니다.
extends Node2D
func _ready() -> void:
var new_region_rid: RID = NavigationServer2D.region_create()
var default_map_rid: RID = get_world_2d().get_navigation_map()
NavigationServer2D.region_set_map(new_region_rid, default_map_rid)
public partial class MyNode2D : Node2D
{
public override void _Ready()
{
Rid newRegionRid = NavigationServer2D.RegionCreate();
Rid defaultMapRid = GetWorld2D().NavigationMap;
NavigationServer2D.RegionSetMap(newRegionRid, defaultMapRid);
}
}
extends Node3D
func _ready() -> void:
var new_region_rid: RID = NavigationServer3D.region_create()
var default_map_rid: RID = get_world_3d().get_navigation_map()
NavigationServer3D.region_set_map(new_region_rid, default_map_rid)
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
Rid newRegionRid = NavigationServer3D.RegionCreate();
Rid defaultMapRid = GetWorld3D().NavigationMap;
NavigationServer3D.RegionSetMap(newRegionRid, defaultMapRid);
}
}
참고
내비게이션 지역은 단일 내비게이션 지도에만 할당할 수 있습니다. 기존 지역이 새 내비게이션 지도에 할당되면 이전 지도는 그대로 유지됩니다.