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

behaviors

SteeringManagerbehaviors 是一组可以控制对象运动的函数集合。这些函数中的每一个都是一个可以修改对象运动行为的插件,可以相互组合使用以实现特定的目标。

函数列表

以下是 behaviors 可用的函数。每个函数的参数类型和返回值类型都会在函数的注释中标明。

seek

将对象移向目标位置。估算的参数是减速半径和最大速度。

seek (target: Vector2, deceleration: number, maxSpeed: number): SteeringForce

flee

引导对象远离目标位置。估算的参数是减速半径和最大速度。

flee (target: Vector2, deceleration: number, maxSpeed: number): SteeringForce

arrive

使对象靠近目标位置并停下。估算的参数是减速半径、最大速度和一个在目标位置前停止的半径。

arrive (target: Vector2, deceleration: number, maxSpeed: number, slowingRadius: number): SteeringForce

pursue

使对象跟踪运动中的目标物体。估算的参数是追击预测时间和最大速度。

pursue (target: MovingObject, maxPrediction: number, maxSpeed: number): SteeringForce

evade

使对象回避运动中的目标物体。估算的参数是逃避预测时间和最大速度。

evade (target: MovingObject, maxPrediction: number, maxSpeed: number): SteeringForce

wander

使对象漫步,随机地改变运动方向。估算的参数是最大速度、变化最大角度和漫步圆半径。

wander (maxSpeed: number, maxRotation: number, wanderRadius: number, wanderDistance: number): SteeringForce

obstacleAvoidance

让对象避开障碍物,以避免碰撞。估算的参数是感知范围、最大检测距离和角度,以及转动速度。

obstacleAvoidance (maxSpeed: number, detectionRange: number, avoidDistance: number, avoidAngle: number, reactionTime: number): SteeringForce

wallAvoidance

让对象避开墙体,以避免碰撞。估算的参数是射线数量、射线长度、最大检测距离和角度,以及转动速度。

wallAvoidance (maxSpeed: number, feelerSegmentLength: number, detectionRange: number, avoidDistance: number, avoidAngle: number, reactionTime: number): SteeringForce

followPath

使对象沿着一条路径移动。估算的参数是最大速度、路径、到达路径节点的距离以及到达路径的最大速度。

followPath (maxSpeed: number, path: Array<Vector2>, waypointThreshold: number, maxWaypointSpeed: number): SteeringForce

pursuitOffset

使对象跟踪带有偏移量的运动中的目标物体。估算的参数是追击预测时间、最大速度和偏移量。

pursuitOffset (leader: MovingObject, pursuitOffset: Vector2, maxPrediction: number, maxSpeed: number): SteeringForce

interpose

使对象移动到两个移动的目标物体之间。估算的参数是两个目标物体、将到达的距离和最大速度。

interpose (objectA: MovingObject, objectB: MovingObject, closeDistance: number, maxSpeed: number): SteeringForce

返回值

每个函数的返回值都是一个向量,表示所施加的力的大小和方向。此向量可以与其他行为的返回值组合,以得出最终的施力结果。

示例

以下代码片段展示了如何使用 SteeringManagerbehaviors

import SteeringManager from 'yuka';
 
const agent = new MovingObject();
const steering = new SteeringManager( agent );
 
// 定义位于 ( 10, 1 ) 的目标位置
const target = new Vector2( 10, 1 );
 
// 定义一个可以减速到达的施力
const slowingForce = steering.behaviors.arrive( target, 1, 6, 1 );
 
// 定义一个可以避免碰撞的施力
const avoidanceForce = steering.behaviors.obstacleAvoidance( 6, 100, 10, Math.PI * 0.5, 0.1 );
 
// 将这些施力组合起来
const steeringForce = slowingForce.add( avoidanceForce );
 
// 将施力应用于移动对象
agent.applyForce( steeringForce );