panicDistance
是 Yuka js库 EvadeBehavior 插件中的一个属性,用于定义逃避行为启动的距离阈值。
当有威胁靠近时,被控制的物体将开始逃避行为,直到安全距离内。panicDistance 属性指定了该安全距离。
默认情况下,panicDistance 属性设置为 infinity (正无穷大),这表示不限制距离阈值。
可以通过以下方式来设置 panicDistance 属性:
evadeBehavior.panicDistance = 5; // 设置 panicDistance 为 5
设置 panicDistance 为 0 会导致逃避行为不会发生。如果 panicDistance 的值小于等于 0,则会抛出异常。
import { EvadeBehavior, Group, Vector3 } from 'yuka';
// 创建一个人类群组
const humans = new Group();
// 创建一个僵尸
const zombie = new Zombie();
// 创建逃避行为
const evadeBehavior = new EvadeBehavior();
// 将逃避行为附加到僵尸实例上
zombie.steering.add( evadeBehavior );
// 设置逃避行为的 panicDistance 为 3
evadeBehavior.panicDistance = 3;
// 将对象加入群组
humans.add( human1, human2, human3, ... );
// 将僵尸追加到群组中
humans.add( zombie );
// 更新所有对象的状态
humans.update( delta );
// 获取僵尸的逃避行为目标点
const target = zombie.steering.target;
// 移动僵尸向目标点移动
zombie.position.add( target.clone().sub( zombie.position ).normalize().multiplyScalar( zombie.maxSpeed * delta ) );
在上面的示例中,如果僵尸与任何人类的距离小于 3,它将启动逃避行为,其目标点为远离最近人类的位置。