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

Evaluators

evaluators是Yuka js库中的核心部分之一,它们用于计算或评估实体或其组件的状态并告诉其该采取的下一步行动。这些计算通常基于当前的感知情况、目标和行为。

evaluators在Yuka中被定义为JavaScript类,它们包含以下方法:

  • constructor: 接受一个参数options,该参数是对象字面量,包含与评估器相关的配置。评估器可以是可配置的,具体取决于使用情况。
  • calculateDesirability: 基于给定的情况和目标,计算出该采取某个行动的期望程度。返回一个数字,表示该行动是多么有吸引力。
  • calculatePriority: 根据期望程度和当前情况,计算处理它的优先级。返回一个数字,表示应该优先处理哪个评估器。
  • execute: 执行特定行动的方法。

以下是建立评估器的示例代码:

import { Evaluator } from ‘./Evaluator’;

class SampleEvaluator extends Evaluator {
  constructor(options) {
    super(options);
    this.myCustomOption = options.myCustomOption; / / 自定义选项 
    this.myOtherCustomOption = options.myOtherCustomOption;
  }
  
  calculateDesirability() {
    / / 在此处描述期望计算
    return 1.0;
  }
  
  calculatePriority() {
    / / 在此处描述优先级计算
    return this.calculateDesirability() * this.myCustomOption;
  }
  
  execute() {
    / / 在此处描述执行操作
  }
}

以上代码显示了evaluators的基本结构和方法。通过重写这些方法,可根据不同的应用程序场景开发高效且自定义的评估器。