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()
方法中执行 PanicBehavior
的 execute(this)
,以便让实体在距离目标小于 panicDistance
时进入惶恐状态。同时,在实体的 update()
方法中应该包含其他针对惶恐状态的动作和逻辑。