Unity人工智能实战(原书第2版)
上QQ阅读APP看书,第一时间看更新

1.9 避开agent

在群体仿真(crowd-simulation)游戏中,agent的行为非常像粒子在基于物理的系统中的表现,看上去不太自然。本节的目标是创建一个agent,能够模拟避开人群那样的移动方式。

准备工作

创建一个Agent标签,然后把标签指定到那些我们想要避开的游戏对象上,另外还需要为它们附加Agent脚本组件。如图1-4所示。

图1-4 在Inspector窗口中配置一个假agent的示例

注意:

▪ 标签:Agent(我们创建的)

▪ 附加Agent组件(我们创建的)

操作步骤

只需要创建一个新的agent行为:

1. 创建AvoidAgent行为,包括一个避障半径和一组要避开的agent:

2. 实现Start函数,根据我们之前创建的标签设置agent列表的值:

3. 定义GetSteering函数:

4. 添加下面的变量,以计算快要靠近的agent的距离和速度:

5. 找到与当前agent有碰撞倾向的最近的agent:

6. 如果有的话,就远离它们:

运行原理

在一组agent中,我们要注意哪一个agent是距离最近的,如果足够近的话,就试着让游戏对象按照期望的路线以当前的速度逃离,这样它们就不会相撞。

延伸阅读

此行为在与其他行为使用混合技术(本章中会提及)组合时效果不错,也是碰撞躲避算法的起点。