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

panicDistance

介绍

panicDistance 是 Yuka.js 库中的一个 Behavior(行为)。该行为会向一个实体(entity)发送一个警告信号,当该实体距离其目标(target)小于预定的 panicDistance 时,实体会进入惶恐状态,然后执行其他动作。

语法

new PanicBehavior(panicDistance, target)

参数

  • panicDistance:数字类型,表示实体进入惶恐状态所需的最小距离。
  • target:Object 类型,表示实体的目标。

示例

import { PanicBehavior } from 'yuka';

class Monster {
  constructor() {
    this.panicBehavior = new PanicBehavior(10, player);
    this.bravery = 10;
    this.isPanicked = false;
  }

  update() {
    if (this.isPanicked) {
       this.bravery--;
       if (this.bravery <= 0) {
          console.log('Monster has fled.');
       }
    } else {
       this.panicBehavior.execute(this);
    }
  }
}

在上述示例中,我们创建了一个 Monster 类。Monster 实例会在每次的 update() 方法中执行 panicBehavior.execute(this)。如果该实体距离 player 小于预定的距离(10,即 panicDistance)时,实体会进入惶恐状态,然后执行其他动作。否则,它会保持平静状态。在惶恐状态下,实体的勇气值(bravery)会不断减少,如果勇气值小于或等于 0,实体就会逃离(console.log('Monster has fled.'))。

注意事项

  • 必须先创建实体实例,然后创建 PanicBehavior 实例并将其传递为实体的一个属性。
  • 在实体的 update() 方法中执行 PanicBehaviorexecute(this),以便让实体在距离目标小于 panicDistance 时进入惶恐状态。同时,在实体的 update() 方法中应该包含其他针对惶恐状态的动作和逻辑。
  • 当其他动作和逻辑导致实体的勇气值回到正常范围时,实体会回到平静状态。