NavigationPolygon

继承: Resource < RefCounted < Object

2D 导航网格,描述用于寻路的可穿越表面。

描述

导航网格可以通过在 NavigationServer2D 的帮助下烘焙它来创建,也可以通过手动添加顶点和凸多边形索引数组来创建。

要烘焙导航网格,至少需要添加一个轮廓来定义烘焙区域的外部边界。

GDScriptC#

  1. var new_navigation_mesh = NavigationPolygon.new()
  2. var bounding_outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
  3. new_navigation_mesh.add_outline(bounding_outline)
  4. NavigationServer2D.bake_from_source_geometry_data(new_navigation_mesh, NavigationMeshSourceGeometryData2D.new());
  5. $NavigationRegion2D.navigation_polygon = new_navigation_mesh
  1. var newNavigationMesh = new NavigationPolygon();
  2. var boundingOutline = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) };
  3. newNavigationMesh.AddOutline(boundingOutline);
  4. NavigationServer2D.BakeFromSourceGeometryData(newNavigationMesh, new NavigationMeshSourceGeometryData2D());
  5. GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;

手动添加顶点和多边形索引。

GDScriptC#

  1. var new_navigation_mesh = NavigationPolygon.new()
  2. var new_vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)])
  3. new_navigation_mesh.vertices = new_vertices
  4. var new_polygon_indices = PackedInt32Array([0, 1, 2, 3])
  5. new_navigation_mesh.add_polygon(new_polygon_indices)
  6. $NavigationRegion2D.navigation_polygon = new_navigation_mesh
  1. var newNavigationMesh = new NavigationPolygon();
  2. var newVertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) };
  3. newNavigationMesh.Vertices = newVertices;
  4. var newPolygonIndices = new int[] { 0, 1, 2, 3 };
  5. newNavigationMesh.AddPolygon(newPolygonIndices);
  6. GetNode<NavigationRegion2D>("NavigationRegion2D").NavigationPolygon = newNavigationMesh;

教程

属性

float

agent_radius

10.0

float

cell_size

1.0

int

parsed_collision_mask

4294967295

ParsedGeometryType

parsed_geometry_type

2

StringName

source_geometry_group_name

&”navigation_polygon_source_geometry_group”

SourceGeometryMode

source_geometry_mode

0

方法

void

add_outline ( PackedVector2Array outline )

void

add_outline_at_index ( PackedVector2Array outline, int index )

void

add_polygon ( PackedInt32Array polygon )

void

clear ( )

void

clear_outlines ( )

void

clear_polygons ( )

NavigationMesh

get_navigation_mesh ( )

PackedVector2Array

get_outline ( int idx ) const

int

get_outline_count ( ) const

bool

get_parsed_collision_mask_value ( int layer_number ) const

PackedInt32Array

get_polygon ( int idx )

int

get_polygon_count ( ) const

PackedVector2Array

get_vertices ( ) const

void

make_polygons_from_outlines ( )

void

remove_outline ( int idx )

void

set_outline ( int idx, PackedVector2Array outline )

void

set_parsed_collision_mask_value ( int layer_number, bool value )

void

set_vertices ( PackedVector2Array vertices )


枚举

enum ParsedGeometryType:

ParsedGeometryType PARSED_GEOMETRY_MESH_INSTANCES = 0

将网格实例解析为障碍几何体。这包括 Polygon2DMeshInstance2DMultiMeshInstance2DTileMap 节点。

仅当网格使用 2D 顶点表面格式时才会对其进行解析。

ParsedGeometryType PARSED_GEOMETRY_STATIC_COLLIDERS = 1

StaticBody2DTileMap 碰撞器解析为障碍几何体。碰撞器应在由 parsed_collision_mask 指定的层中。

ParsedGeometryType PARSED_GEOMETRY_BOTH = 2

PARSED_GEOMETRY_MESH_INSTANCESPARSED_GEOMETRY_STATIC_COLLIDERS.

ParsedGeometryType PARSED_GEOMETRY_MAX = 3

代表 ParsedGeometryType 枚举的大小。


enum SourceGeometryMode:

SourceGeometryMode SOURCE_GEOMETRY_ROOT_NODE_CHILDREN = 0

在根节点的子节点中递归扫描几何体。

SourceGeometryMode SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1

以递归方式扫描组中的节点及其子节点以获取几何图形。该组由 source_geometry_group_name 指定。

SourceGeometryMode SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2

将组中的节点用于几何。该组由 source_geometry_group_name 指定。

SourceGeometryMode SOURCE_GEOMETRY_MAX = 3

代表 SourceGeometryMode 枚举的大小。


属性说明

float agent_radius = 10.0

  • void set_agent_radius ( float value )

  • float get_agent_radius ( )

烘焙导航网格时侵蚀/收缩可行走表面的距离。


float cell_size = 1.0

  • void set_cell_size ( float value )

  • float get_cell_size ( )

用于将导航网格顶点栅格化的单元格大小。必须与导航地图上的单元格大小相匹配。


int parsed_collision_mask = 4294967295

  • void set_parsed_collision_mask ( int value )

  • int get_parsed_collision_mask ( )

用于扫描静态碰撞器的物理层。

仅在 parsed_geometry_typePARSED_GEOMETRY_STATIC_COLLIDERSPARSED_GEOMETRY_BOTH 时才使用。


ParsedGeometryType parsed_geometry_type = 2

决定哪种类型的节点可解析为几何图形。可能的取值见 ParsedGeometryType


StringName source_geometry_group_name = &"navigation_polygon_source_geometry_group"

  • void set_source_geometry_group_name ( StringName value )

  • StringName get_source_geometry_group_name ( )

应被解析以烘焙源几何体的节点的组名称。

只有当 source_geometry_modeSOURCE_GEOMETRY_GROUPS_WITH_CHILDRENSOURCE_GEOMETRY_GROUPS_EXPLICIT 时才使用。


SourceGeometryMode source_geometry_mode = 0

烘焙时使用的几何体的来源。可能的取值见 SourceGeometryMode


方法说明

void add_outline ( PackedVector2Array outline )

将包含轮廓顶点的 PackedVector2Array 追加到包含所有轮廓的内部数组。


void add_outline_at_index ( PackedVector2Array outline, int index )

将一个包含轮廓顶点的 PackedVector2Array 添加到包含固定位置处的所有轮廓的内部数组。


void add_polygon ( PackedInt32Array polygon )

使用调用 get_vertices 得到的顶点的索引添加一个多边形。


void clear ( )

清除顶点和多边形索引的内部数组。


void clear_outlines ( )

清除轮廓数组,但不清除顶点和由顶点创建的多边形。


void clear_polygons ( )

清除多边形数组,但不清除轮廓和顶点数组。


NavigationMesh get_navigation_mesh ( )

返回由该导航多边形产生的 NavigationMesh。该导航网格可用于使用 NavigationServer3D.region_set_navigation_mesh API 直接更新区块的导航网格(因为 2D 在幕后使用 3D 服务器)。


PackedVector2Array get_outline ( int idx ) const

返回一个 PackedVector2Array,其中包含在编辑器中或通过脚本创建的轮廓的顶点。


int get_outline_count ( ) const

返回在编辑器或脚本中创建的轮廓的数量。


bool get_parsed_collision_mask_value ( int layer_number ) const

返回 parsed_collision_mask 中是否启用了指定的层,给定的 layer_number 应在 1 和 32 之间。


PackedInt32Array get_polygon ( int idx )

返回创建多边形的顶点索引,形式为 PackedInt32Array


int get_polygon_count ( ) const

返回多边形的数量。


PackedVector2Array get_vertices ( ) const

返回一个 PackedVector2Array,其中包含用于创建多边形的所有顶点。


void make_polygons_from_outlines ( )

从编辑器中或通过脚本添加的轮廓创建多边形。

已弃用。该函数已弃用,并且可能会在将来的版本中移除。请改用 NavigationServer2D.parse_source_geometry_dataNavigationServer2D.bake_from_source_geometry_data


void remove_outline ( int idx )

删除在编辑器或脚本中创建的轮廓。你必须调用 make_polygons_from_outlines 来更新多边形。


void set_outline ( int idx, PackedVector2Array outline )

更改在编辑器或脚本中创建的轮廓。你必须调用 make_polygons_from_outlines 来更新多边形。


void set_parsed_collision_mask_value ( int layer_number, bool value )

根据 value,启用或禁用 parsed_collision_mask 中指定的层,给定的 layer_number 应在 1 和 32 之间。


void set_vertices ( PackedVector2Array vertices )

设置顶点,可以使用 add_polygon 方法对其进行索引,创建多边形。

Previous Next


© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7.

Built with Sphinx using a theme provided by Read the Docs.