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

updateNeighborhood

updateNeighborhood()方法将重新计算触发器在其邻域中的状态。

参数

  • 该方法没有参数。

返回值

  • 该方法没有返回值。

描述

  • 在Yuka中,触发器表示一个体积或范围,用于检测其他元素是否进入或离开该体积或范围。
  • 如果在调用updateNeighborhood()之前添加/删除了网格实体,则需要更新触发器的邻域。这可以通过调用updateNeighborhood()方法来完成。
  • 该方法用于重新计算触发器在其邻域中的状态:哪些实体离开了触发器的体积/范围,哪些新实体进入了该体积/范围。
  • 邻域是在使用add()方法添加网格实体时自动初始化的,但也可以在添加或删除网格实体后手动刷新,以确保其有效性。

示例

// 创建一个触发器
const trigger = new Trigger();

// 将触发器添加到世界中
world.add(trigger);

// 添加网格实体
world.add(entity1);
world.add(entity2);
world.add(entity3);

// 向触发器添加网格实体
trigger.add(entity1);
trigger.add(entity2);
trigger.add(entity3);

// 在添加/删除网格实体后,调用此方法刷新邻域
trigger.updateNeighborhood();

注意

  • Yuka中的触发器仅以体积表示,因此它们的邻域是基于体积而不是距离计算的,存在一定的限制。
  • 调用updateNeighborhood()的频率应该限制在最小化其计算并确保其准确性的情况下。不要过于频繁地调用它,以免降低运行效率。