【Unity】入门学习笔记180524——人工智能(6)——操控性为(2)以及编程的其他问题

1、组行为的基础是分离、队列和聚集,根据实际需要,可以与前面的个体操控性为相结合,从而产生更复杂的行为。


2、而对于各个行为的管理,需要更高的决策层做出决定,这个决策层可以利用状态机来实现,如满足某一条件,执行某一行为


3、组合多个行为,最简单的方式就是直接把各个行为产生的操控力加到一起,总的操控力会反映出这些行为

同时,通过加权截断总和等方式控制最大操控力来实现相关逻辑


4、应用有模拟鸟群飞行、多AI角色障碍赛、实现动物迁徙中的跟随领队行为、排队通过狭窄通道等


5、使用Unity3D开源库UnitySteer可快速实现操控行为


6、关于操控行为编程的其他问题

①操控力的更新频率

    检测附近的邻居、计算操控力等这些步骤并不是像游戏画面和动画一样,每一帧都需要进行更新,而是按照事先先设定的更新频率进行更新。在设计系统时,对时间的把握是很关键的。

    正反馈带来振荡,而负反馈会维持群体不至于失控

    如果反馈过快,反应时间过短,那么将会引起震荡,而不是缓慢地波动。另外,过快的反馈也会导致输入数据减少,因此没有时间收集足够的数据。

    相反,如果反馈过慢,将会使系统显得很单调。

    设计系统的时候需要注意,每个正反馈都会带来潜在的不稳定因素,必须以某种方式被平衡。

②AI角色思考速度

    绝大数游戏中,动画系统和物理系统得速率是一致的,AI无需高于这个速率。对于手机游戏,由于资源有限,可能会有少量的快速动画、但较慢的整体速率,此时AI只需小于等于这个较慢的整体速率就可以了。

    让AI角色的思考速度与系统帧率相同并不是一个好的选择

    指定的更新频率可以采用“计时器”来实现,在U3d的C#脚本中,还可以用Coroutine来实现。


猜你喜欢

转载自blog.csdn.net/dylan_day/article/details/80444417