Combining Steering Forces : 合并转向力

每一个Steering行为会产生一个力,他们会作用在速度向量上,这个合力的方向和大小会驱动AI个体实现一些行为(如Seek,Flee,Wander等),大致的计算方式如下:

steering = seek(); // this can be any behavior
steering = truncate (steering, max_force)
steering = steering / mass
 
velocity = truncate (velocity + steering , max_speed)
position = position + velocity

继续阅读“Combining Steering Forces : 合并转向力”

Steering Behaviors: Pursuit and Evade 追逐和躲避

到目前为止,我们研究了seek,flee,arrival,wander行为。在这个教程,会研究追逐和躲避行为。让角色跟随活着躲避。

追踪是指朝着移动目标运动并试图抓住它,这里说的“抓住”很重要,如果只是朝着目标运动,那基本上只是重复目标的运动轨迹。在追踪的时候,追踪者必须做出一定的预判,如果能够预判出目标接下去几秒的位置,就能够调整自己当前的速度来抓住它。可以预测轨迹,减少不必要的路径。

继续阅读“Steering Behaviors: Pursuit and Evade 追逐和躲避”

Steering Behaviors: Flee and Arrival 逃逸和到达

Flee

之前描述的seek行为基于两个力,一个是目标速度,一个是朝目标位置的推力。

desired_velocity = normalize(target - position) * max_velocity
steering = desired_velocity - velocity

desired_velocity在这里就是离目标位置的最短路径,根据目标点的位置和个体的位置相减得出,代表了一个以个体位置为起点,朝向目标点的力。

继续阅读“Steering Behaviors: Flee and Arrival 逃逸和到达”

Steering Behaviors: Seek 转向行为 : 寻找

文章将翻译教程,然后我会根据项目代码,在Unity3d 实现相关相应的内容。

Steering Behaviors 意在使游戏中的AI个体具备真实的运动行为,通过对力的施加与整合,使游戏个体具备类生命体般的运动特征。这项技术并不基于寻路或者别的宏观算法,而是基于个体局部周围空间的信息,单个的行为实现起来非常的方便,它们组合在一起又能有非常复杂的行为方式。 继续阅读“Steering Behaviors: Seek 转向行为 : 寻找”