掌舵行为
掌舵行为[1][2],是一个让游戏中那些漫无目的游荡的角色,能够移动的自然一点的技术.这个技术不使用路径搜寻演算法、也不牵涉到全局计算,单纯使用角色周围的环境来决定移动的速度与方向.尽管如此,这个技术依旧可以为角色创造自然且相当复杂的移动方式.[3]
基础移动方式
[编辑]以下先介绍六种基础的移动方式:寻找、逃跑、抵达、游荡、追赶、回避.
寻找:执行这种移动方式,需要提供角色一个目标,让角色能够跟著这个目标走.具体的做法是给每个角色一个速度向量,决定其移动的方向与快慢.当目标出现时,角色会在其与目标连线方向上,增加一个修正的速度向量.这个修正的速度向量加上原先角色的速度向量,会变成最终的速度向量.一段时间后,角色就会渐渐靠近目标.
逃跑:这种移动方式跟寻找相反,是给定一个目标,而角色会远离这个目标.具体的做法与寻找是一样的,只是方向不同而已.
抵达:当角色渐渐靠近目标时,需要模拟出渐停的效果.具体的作法是在目标周围画一个圈,当角色进入这个圈时,依照一定的距离降低角色的速度,当速度降到零,角色就停下来了.
游荡:当需要让角色随意的移动时,可以为角色现有的速度向量加上一个随机的变量,这样角色就会随机改变移动方向跟快慢.
追赶:跟寻找很像,都是角色追著某一个目标跑.差别是在寻找时,角色的速度向量是根据目标当前的位置改变,但是在追赶时,角色会预测目标在下一个时间的位置,所以是依照目标未来的位置改变自己的速度向量.
回避:跟逃跑非常像,都是角色要逃离某一个目标.差别是角色会预测目标在下一个时间的位置,所以是依照目标未来的位置改变自己的速度向量.回避跟追赶也很像,差别只是方向相反.
进阶移动方式
[编辑]除了上述六种基本移动方式外,掌舵行为还包含了以下四种较为进阶的移动:碰撞避免、路径跟随、领导跟随、排队.碰撞避免顾名思义,就是当角色距离某个物体进到一个程度时,为了避免碰望,需要调整角色的速度向量,让其不至于与这个物体碰撞.路径跟随则是指定一条路径,角色必须要随著这条路径前进.领导跟随指的是,指定某角色为领导,其他角色都要跟著领导走.最后,排队移动可以利用上述寻找移动跟碰撞避免两种移动方式组合而成,只要指定一条线,角色就会排好队,同时避免跟其他角色碰撞.[4]
参考资料
[编辑]- ↑ gdx-ai: Artificial Intelligence framework for games based on libGDX or not. Features: Steering Behaviors, Formation Motion, Pathfinding, Behavior Trees and Finite State Machines, libgdx, 2017-12-02, https://github.com/libgdx/gdx-ai, retrieved 2017-12-02
- ↑ Introduction to Steering Behaviours. [2017-12-02] (英语).
- ↑ Understanding Steering Behaviors - Envato Tuts+ Game Development Tutorials. Game Development Envato Tuts+. [2017-11-30].
- ↑ Steering Behaviors For Autonomous Characters.www.red3d.com.于2017年11月30日查阅.