mirror of
				https://github.com/godotengine/godot.git
				synced 2025-11-04 07:31:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			222 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<?xml version="1.0" encoding="UTF-8" ?>
 | 
						|
<class name="NavigationPolygon" inherits="Resource" is_experimental="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
 | 
						|
	<brief_description>
 | 
						|
		A 2D navigation mesh that describes a traversable surface for pathfinding.
 | 
						|
	</brief_description>
 | 
						|
	<description>
 | 
						|
		A navigation mesh can be created either by baking it with the help of the [NavigationServer2D], or by adding vertices and convex polygon indices arrays manually.
 | 
						|
		To bake a navigation mesh at least one outline needs to be added that defines the outer bounds of the baked area.
 | 
						|
		[codeblocks]
 | 
						|
		[gdscript]
 | 
						|
		var new_navigation_mesh = NavigationPolygon.new()
 | 
						|
		var bounding_outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
 | 
						|
		new_navigation_mesh.add_outline(bounding_outline)
 | 
						|
		NavigationServer2D.bake_from_source_geometry_data(new_navigation_mesh, NavigationMeshSourceGeometryData2D.new());
 | 
						|
		$NavigationRegion2D.navigation_polygon = new_navigation_mesh
 | 
						|
		[/gdscript]
 | 
						|
		[csharp]
 | 
						|
		var newNavigationMesh = new NavigationPolygon();
 | 
						|
		var boundingOutline = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) };
 | 
						|
		newNavigationMesh.AddOutline(boundingOutline);
 | 
						|
		NavigationServer2D.BakeFromSourceGeometryData(newNavigationMesh, new NavigationMeshSourceGeometryData2D());
 | 
						|
		GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;
 | 
						|
		[/csharp]
 | 
						|
		[/codeblocks]
 | 
						|
		Adding vertices and polygon indices manually.
 | 
						|
		[codeblocks]
 | 
						|
		[gdscript]
 | 
						|
		var new_navigation_mesh = NavigationPolygon.new()
 | 
						|
		var new_vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
 | 
						|
		new_navigation_mesh.vertices = new_vertices
 | 
						|
		var new_polygon_indices = PackedInt32Array([0, 1, 2, 3])
 | 
						|
		new_navigation_mesh.add_polygon(new_polygon_indices)
 | 
						|
		$NavigationRegion2D.navigation_polygon = new_navigation_mesh
 | 
						|
		[/gdscript]
 | 
						|
		[csharp]
 | 
						|
		var newNavigationMesh = new NavigationPolygon();
 | 
						|
		var newVertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) };
 | 
						|
		newNavigationMesh.Vertices = newVertices;
 | 
						|
		var newPolygonIndices = new int[] { 0, 1, 2, 3 };
 | 
						|
		newNavigationMesh.AddPolygon(newPolygonIndices);
 | 
						|
		GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;
 | 
						|
		[/csharp]
 | 
						|
		[/codeblocks]
 | 
						|
	</description>
 | 
						|
	<tutorials>
 | 
						|
		<link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link>
 | 
						|
		<link title="Using NavigationMeshes">$DOCS_URL/tutorials/navigation/navigation_using_navigationmeshes.html</link>
 | 
						|
	</tutorials>
 | 
						|
	<methods>
 | 
						|
		<method name="add_outline">
 | 
						|
			<return type="void" />
 | 
						|
			<param index="0" name="outline" type="PackedVector2Array" />
 | 
						|
			<description>
 | 
						|
				Appends a [PackedVector2Array] that contains the vertices of an outline to the internal array that contains all the outlines.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="add_outline_at_index">
 | 
						|
			<return type="void" />
 | 
						|
			<param index="0" name="outline" type="PackedVector2Array" />
 | 
						|
			<param index="1" name="index" type="int" />
 | 
						|
			<description>
 | 
						|
				Adds a [PackedVector2Array] that contains the vertices of an outline to the internal array that contains all the outlines at a fixed position.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="add_polygon">
 | 
						|
			<return type="void" />
 | 
						|
			<param index="0" name="polygon" type="PackedInt32Array" />
 | 
						|
			<description>
 | 
						|
				Adds a polygon using the indices of the vertices you get when calling [method get_vertices].
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="clear">
 | 
						|
			<return type="void" />
 | 
						|
			<description>
 | 
						|
				Clears the internal arrays for vertices and polygon indices.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="clear_outlines">
 | 
						|
			<return type="void" />
 | 
						|
			<description>
 | 
						|
				Clears the array of the outlines, but it doesn't clear the vertices and the polygons that were created by them.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="clear_polygons">
 | 
						|
			<return type="void" />
 | 
						|
			<description>
 | 
						|
				Clears the array of polygons, but it doesn't clear the array of outlines and vertices.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="get_navigation_mesh">
 | 
						|
			<return type="NavigationMesh" />
 | 
						|
			<description>
 | 
						|
				Returns the [NavigationMesh] resulting from this navigation polygon. This navigation mesh can be used to update the navigation mesh of a region with the [method NavigationServer3D.region_set_navigation_mesh] API directly (as 2D uses the 3D server behind the scene).
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="get_outline" qualifiers="const">
 | 
						|
			<return type="PackedVector2Array" />
 | 
						|
			<param index="0" name="idx" type="int" />
 | 
						|
			<description>
 | 
						|
				Returns a [PackedVector2Array] containing the vertices of an outline that was created in the editor or by script.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="get_outline_count" qualifiers="const">
 | 
						|
			<return type="int" />
 | 
						|
			<description>
 | 
						|
				Returns the number of outlines that were created in the editor or by script.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="get_parsed_collision_mask_value" qualifiers="const">
 | 
						|
			<return type="bool" />
 | 
						|
			<param index="0" name="layer_number" type="int" />
 | 
						|
			<description>
 | 
						|
				Returns whether or not the specified layer of the [member parsed_collision_mask] is enabled, given a [param layer_number] between 1 and 32.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="get_polygon">
 | 
						|
			<return type="PackedInt32Array" />
 | 
						|
			<param index="0" name="idx" type="int" />
 | 
						|
			<description>
 | 
						|
				Returns a [PackedInt32Array] containing the indices of the vertices of a created polygon.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="get_polygon_count" qualifiers="const">
 | 
						|
			<return type="int" />
 | 
						|
			<description>
 | 
						|
				Returns the count of all polygons.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="get_vertices" qualifiers="const">
 | 
						|
			<return type="PackedVector2Array" />
 | 
						|
			<description>
 | 
						|
				Returns a [PackedVector2Array] containing all the vertices being used to create the polygons.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="make_polygons_from_outlines" is_deprecated="true">
 | 
						|
			<return type="void" />
 | 
						|
			<description>
 | 
						|
				Creates polygons from the outlines added in the editor or by script.
 | 
						|
				[i]Deprecated.[/i] This function is deprecated, and might be removed in a future release. Use [method NavigationServer2D.parse_source_geometry_data] and [method NavigationServer2D.bake_from_source_geometry_data] instead.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="remove_outline">
 | 
						|
			<return type="void" />
 | 
						|
			<param index="0" name="idx" type="int" />
 | 
						|
			<description>
 | 
						|
				Removes an outline created in the editor or by script. You have to call [method make_polygons_from_outlines] for the polygons to update.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="set_outline">
 | 
						|
			<return type="void" />
 | 
						|
			<param index="0" name="idx" type="int" />
 | 
						|
			<param index="1" name="outline" type="PackedVector2Array" />
 | 
						|
			<description>
 | 
						|
				Changes an outline created in the editor or by script. You have to call [method make_polygons_from_outlines] for the polygons to update.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="set_parsed_collision_mask_value">
 | 
						|
			<return type="void" />
 | 
						|
			<param index="0" name="layer_number" type="int" />
 | 
						|
			<param index="1" name="value" type="bool" />
 | 
						|
			<description>
 | 
						|
				Based on [param value], enables or disables the specified layer in the [member parsed_collision_mask], given a [param layer_number] between 1 and 32.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
		<method name="set_vertices">
 | 
						|
			<return type="void" />
 | 
						|
			<param index="0" name="vertices" type="PackedVector2Array" />
 | 
						|
			<description>
 | 
						|
				Sets the vertices that can be then indexed to create polygons with the [method add_polygon] method.
 | 
						|
			</description>
 | 
						|
		</method>
 | 
						|
	</methods>
 | 
						|
	<members>
 | 
						|
		<member name="agent_radius" type="float" setter="set_agent_radius" getter="get_agent_radius" default="10.0">
 | 
						|
			The distance to erode/shrink the walkable surface when baking the navigation mesh.
 | 
						|
		</member>
 | 
						|
		<member name="cell_size" type="float" setter="set_cell_size" getter="get_cell_size" default="1.0">
 | 
						|
			The cell size used to rasterize the navigation mesh vertices. Must match with the cell size on the navigation map.
 | 
						|
		</member>
 | 
						|
		<member name="parsed_collision_mask" type="int" setter="set_parsed_collision_mask" getter="get_parsed_collision_mask" default="4294967295">
 | 
						|
			The physics layers to scan for static colliders.
 | 
						|
			Only used when [member parsed_geometry_type] is [constant PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH].
 | 
						|
		</member>
 | 
						|
		<member name="parsed_geometry_type" type="int" setter="set_parsed_geometry_type" getter="get_parsed_geometry_type" enum="NavigationPolygon.ParsedGeometryType" default="2">
 | 
						|
			Determines which type of nodes will be parsed as geometry. See [enum ParsedGeometryType] for possible values.
 | 
						|
		</member>
 | 
						|
		<member name="source_geometry_group_name" type="StringName" setter="set_source_geometry_group_name" getter="get_source_geometry_group_name" default="&"navigation_polygon_source_geometry_group"">
 | 
						|
			The group name of nodes that should be parsed for baking source geometry.
 | 
						|
			Only used when [member source_geometry_mode] is [constant SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant SOURCE_GEOMETRY_GROUPS_EXPLICIT].
 | 
						|
		</member>
 | 
						|
		<member name="source_geometry_mode" type="int" setter="set_source_geometry_mode" getter="get_source_geometry_mode" enum="NavigationPolygon.SourceGeometryMode" default="0">
 | 
						|
			The source of the geometry used when baking. See [enum SourceGeometryMode] for possible values.
 | 
						|
		</member>
 | 
						|
	</members>
 | 
						|
	<constants>
 | 
						|
		<constant name="PARSED_GEOMETRY_MESH_INSTANCES" value="0" enum="ParsedGeometryType">
 | 
						|
			Parses mesh instances as obstruction geometry. This includes [Polygon2D], [MeshInstance2D], [MultiMeshInstance2D], and [TileMap] nodes.
 | 
						|
			Meshes are only parsed when they use a 2D vertices surface format.
 | 
						|
		</constant>
 | 
						|
		<constant name="PARSED_GEOMETRY_STATIC_COLLIDERS" value="1" enum="ParsedGeometryType">
 | 
						|
			Parses [StaticBody2D] and [TileMap] colliders as obstruction geometry. The collider should be in any of the layers specified by [member parsed_collision_mask].
 | 
						|
		</constant>
 | 
						|
		<constant name="PARSED_GEOMETRY_BOTH" value="2" enum="ParsedGeometryType">
 | 
						|
			Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant PARSED_GEOMETRY_STATIC_COLLIDERS].
 | 
						|
		</constant>
 | 
						|
		<constant name="PARSED_GEOMETRY_MAX" value="3" enum="ParsedGeometryType">
 | 
						|
			Represents the size of the [enum ParsedGeometryType] enum.
 | 
						|
		</constant>
 | 
						|
		<constant name="SOURCE_GEOMETRY_ROOT_NODE_CHILDREN" value="0" enum="SourceGeometryMode">
 | 
						|
			Scans the child nodes of the root node recursively for geometry.
 | 
						|
		</constant>
 | 
						|
		<constant name="SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN" value="1" enum="SourceGeometryMode">
 | 
						|
			Scans nodes in a group and their child nodes recursively for geometry. The group is specified by [member source_geometry_group_name].
 | 
						|
		</constant>
 | 
						|
		<constant name="SOURCE_GEOMETRY_GROUPS_EXPLICIT" value="2" enum="SourceGeometryMode">
 | 
						|
			Uses nodes in a group for geometry. The group is specified by [member source_geometry_group_name].
 | 
						|
		</constant>
 | 
						|
		<constant name="SOURCE_GEOMETRY_MAX" value="3" enum="SourceGeometryMode">
 | 
						|
			Represents the size of the [enum SourceGeometryMode] enum.
 | 
						|
		</constant>
 | 
						|
	</constants>
 | 
						|
</class>
 |