-
简介
ORCA算法会把移动的物体抽象成一个圆,圆心表示实体位置,半径表示实体大小 。ORCA算法的一个特点就是会考虑未来一段时间内的情况,通常是一秒或两秒,这个值可以根据移动物体的最大速度来修改。
算法认为,避障的责任是相互的,不是只有一方改变速度,可能在未来一段时间内发生碰撞的双方都会改变速度来避障。也就是说双方预测会发生碰撞时,双方都会采取行动来修正速度。
-
在游戏开发中的应用:
在我们用AStar或NavMesh计算出路径之后,在沿着路径移动过程中,能够实时地避开其他的移动角色和障碍物。使用方式:在移动过程中,将角色当前的速度向量取出来,给到ORCA,由ORCA计算出新的速度向量,再将新的速度向量应用到角色上面。
-
碰撞锥(碰撞区域)
上图中假设B物体处于静止状态,A物体沿着向量v1和v2移动,刚好能和B擦肩而过,不会发生碰撞;若V1和V2的夹角再小一点的话就一定会发生碰撞。此时会产生碰撞区域:
红线画出来的锥形区域就是A相对于B的碰撞区