记录一下足迹,外加自己的评论
常见数据结构和算法
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
Steering Behaviors: Pursuit and Evade 追逐和躲避
到目前为止,我们研究了seek,flee,arrival,wander行为。在这个教程,会研究追逐和躲避行为。让角色跟随活着躲避。
什么是追逐?
追踪是指朝着移动目标运动并试图抓住它,这里说的“抓住”很重要,如果只是朝着目标运动,那基本上只是重复目标的运动轨迹。在追踪的时候,追踪者必须做出一定的预判,如果能够预判出目标接下去几秒的位置,就能够调整自己当前的速度来抓住它。可以预测轨迹,减少不必要的路径。
Steering Behaviors: Wander 漫游
Wandering Around
游戏中的个体常常会有随机性的巡逻情景。通常这些个体在等待某些事情发生,比如说发现玩家然后开战,或者寻找某些东西。当这些行为呈现在玩家面前时,它们必须在视觉感官上市真实可信,富有乐趣的。
Steering Behaviors: Unity移植版本
Steering Behaviors: Flee and Arrival 逃逸和到达
Flee
之前描述的seek行为基于两个力,一个是目标速度,一个是朝目标位置的推力。
desired_velocity = normalize(target - position) * max_velocity steering = desired_velocity - velocity
desired_velocity在这里就是离目标位置的最短路径,根据目标点的位置和个体的位置相减得出,代表了一个以个体位置为起点,朝向目标点的力。
Steering Behaviors: Seek 转向行为 : 寻找
文章将翻译教程,然后我会根据项目代码,在Unity3d 实现相关相应的内容。
Steering Behaviors 意在使游戏中的AI个体具备真实的运动行为,通过对力的施加与整合,使游戏个体具备类生命体般的运动特征。这项技术并不基于寻路或者别的宏观算法,而是基于个体局部周围空间的信息,单个的行为实现起来非常的方便,它们组合在一起又能有非常复杂的行为方式。 继续阅读“Steering Behaviors: Seek 转向行为 : 寻找”