AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

regions

NavMesh的regions是指场景中被划分为导航区域的区域集合。该区域集合通常是由多边形组成的,并用于为AI代理提供可导航的路线。

属性

每个region都有以下属性:

  • id:region的唯一标识符,通常是整数值。
  • vertices:用于组成region多边形的点集合。
  • edges:用于组成region多边形的边集合。
  • bounds:centroid和边界位置的矩形包围盒。
  • centroid:region多边形的重心位置。
  • neighbors:与该region有相邻关系的region集合。
  • portals:与相邻region之间的门的集合。

方法

NavMesh提供以下方法来操作regions:

getRegionByID(id)

根据region的id获取对应的region对象。

参数

  • id (number):要获取的region的唯一标识符。

返回值

  • (Region):对应的region对象。如果没有找到,则返回undefined。

getRegions()

获取所有的region对象。

返回值

  • (Array<Region>):region对象的数组集合,顺序未指定。

findPath(startRegion, endRegion)

搜索从一个region到另一个region的最短路径。

参数

  • startRegion (Region):起始region对象。
  • endRegion (Region):目标region对象。

返回值

  • (Array<Region>):从起始region到目标region的region集合,按照路径顺序排列。

示例代码

以下是一个简单的示例代码,展示了如何使用regions来搜索最短路径。

var navMesh = new NavMesh();
var startRegion = navMesh.getRegionByID(1);
var endRegion = navMesh.getRegionByID(10);
var path = navMesh.findPath(startRegion, endRegion);
console.log(path);
// Output: [Region1, Region2, Region9, Region10]

结论

regions是NavMesh中极其重要的概念之一,它为AI代理提供了导航路线,帮助它们在场景中自由移动。开发者可以使用NavMesh的API来获取和操作每个region对象,并使用findPath方法来搜索最短路径。