1、组行为的基础是分离、队列和聚集,根据实际需要,可以与前面的个体操控性为相结合,从而产生更复杂的行为。
2、而对于各个行为的管理,需要更高的决策层做出决定,这个决策层可以利用状态机来实现,如满足某一条件,执行某一行为
3、组合多个行为,最简单的方式就是直接把各个行为产生的操控力加到一起,总的操控力会反映出这些行为
同时,通过加权截断总和等方式控制最大操控力来实现相关逻辑
4、应用有模拟鸟群飞行、多AI角色障碍赛、实现动物迁徙中的跟随领队行为、排队通过狭窄通道等
5、使用Unity3D开源库UnitySteer可快速实现操控行为
6、关于操控行为编程的其他问题
①操控力的更新频率
检测附近的邻居、计算操控力等这些步骤并不是像游戏画面和动画一样,每一帧都需要进行更新,而是按照事先先设定的更新频率进行更新。在设计系统时,对时间的把握是很关键的。
正反馈带来振荡,而负反馈会维持群体不至于失控
如果反馈过快,反应时间过短,那么将会引起震荡,而不是缓慢地波动。另外,过快的反馈也会导致输入数据减少,因此没有时间收集足够的数据。
相反,如果反馈过慢,将会使系统显得很单调。
设计系统的时候需要注意,每个正反馈都会带来潜在的不稳定因素,必须以某种方式被平衡。
②AI角色思考速度
绝大数游戏中,动画系统和物理系统得速率是一致的,AI无需高于这个速率。对于手机游戏,由于资源有限,可能会有少量的快速动画、但较慢的整体速率,此时AI只需小于等于这个较慢的整体速率就可以了。
让AI角色的思考速度与系统帧率相同并不是一个好的选择
指定的更新频率可以采用“计时器”来实现,在U3d的C#脚本中,还可以用Coroutine来实现。