calculate
是Yuka js库中ObstacleAvoidanceBehavior(障碍物避开行为)的计算方法。该方法用于计算从当前位置开始,可以避开障碍物的最佳移动方向。
参数名 | 类型 | 描述 |
---|---|---|
entity | Entity | 需要计算移动方向的实体 |
avoidanceForce | number | 避让力量 |
whiskerLength | number | 指定感知器长度 |
whiskerCount | number | 感知器数量 |
viewAngle | number | 感知器视野角度 |
obstacles | Array | 包含障碍物的数组 |
返回一个包含x和y分量的二维向量,表示最佳移动方向。
const entity = new Entity();
const behavior = new ObstacleAvoidanceBehavior();
const obstacles = [new Obstacle(), new Obstacle(), new Obstacle()];
const avoidanceForce = 1;
const whiskerLength = 10;
const whiskerCount = 5;
const viewAngle = 180;
behavior.calculate(entity, avoidanceForce, whiskerLength, whiskerCount, viewAngle, obstacles);
在计算移动方向之前,该方法将首先创建多个感知器,每个感知器都代表一个角度范围内的碰撞检测。
然后,该方法会遍历感知器,为每个检测到的障碍物计算障碍物对实体的避让力。
最后,该方法将所有的避让力累加起来,得到最佳移动方向。如果没有任何避让力,该方法将返回实体的当前朝向作为移动方向。