上QQ阅读APP看书,第一时间看更新
1.9 避开agent
在群体仿真(crowd-simulation)游戏中,agent的行为非常像粒子在基于物理的系统中的表现,看上去不太自然。本节的目标是创建一个agent,能够模拟避开人群那样的移动方式。
准备工作
创建一个Agent标签,然后把标签指定到那些我们想要避开的游戏对象上,另外还需要为它们附加Agent脚本组件。如图1-4所示。
注意:
▪ 标签:Agent(我们创建的)
▪ 附加Agent组件(我们创建的)
操作步骤
只需要创建一个新的agent行为:
1. 创建AvoidAgent行为,包括一个避障半径和一组要避开的agent:
2. 实现Start函数,根据我们之前创建的标签设置agent列表的值:
3. 定义GetSteering函数:
4. 添加下面的变量,以计算快要靠近的agent的距离和速度:
5. 找到与当前agent有碰撞倾向的最近的agent:
6. 如果有的话,就远离它们:
运行原理
在一组agent中,我们要注意哪一个agent是距离最近的,如果足够近的话,就试着让游戏对象按照期望的路线以当前的速度逃离,这样它们就不会相撞。
延伸阅读
此行为在与其他行为使用混合技术(本章中会提及)组合时效果不错,也是碰撞躲避算法的起点。