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

radius

WanderBehavior类中,radius属性表示游走模式下移动的最大距离。具有随机游走特性的Wander行为将在当前朝向的前方寻找一个距离不超过radius的随机点,并向该点移动。当到达目标点时,会再次随机寻找下一个点。

使用方法

可通过以下方式设置radius属性:

let wander = new WanderBehavior();
wander.radius = 50; // 设置radius为50

默认值为50

注意:radius的值应该大于0,否则将无法正常运行Wander行为。

示例

以下示例演示了如何使用Wander行为,并通过调整radius属性的值来改变其行为:

let circle = new Circle(200, 200, 20);
let wander = new WanderBehavior();

// 将Wander行为应用到circle对象上
circle.addBehavior(wander);

// 每秒钟随机修改radius值
setInterval(() => {
  wander.radius = Math.random() * 100 + 50;
}, 1000);

// 渲染循环
function gameLoop() {
  // 更新circle对象的位置
  circle.update();

  // 在canvas上绘制circle
  context.clearRect(0, 0, canvas.width, canvas.height);
  circle.draw(context);

  // 循环调用gameLoop函数
  requestAnimationFrame(gameLoop);
}
gameLoop();

在上面的示例中,我们创建了一个半径为20的圆形对象,并将WanderBehavior行为应用于其上。然后,我们每秒钟随机修改radius值,使其在50150之间变化。最后,我们开启gameLoop函数进行渲染循环。

预期效果为:圆形对象将随机游走,并且每秒钟其游走范围将有所改变。

注意事项

  • radius的值应该大于0,否则将无法正常运行Wander行为。
  • radius的值越大,Wander行为的随机程度将越小,反之亦然。一般情况下,建议设置一个合适的值,使其同时具有随机性和可控性。