如果想知道周围世界发生了什么,最简单的方法是查询,AI对感兴趣的事件进行查询,基于轮询的感知系统更容易维护的方式是建立一个轮询中心,进行所有的查询.
事件驱动中,我们需要一个中心监测系统,发生事件时,通知附近的角色,角色再做出反应. 中心监测系统称为"事件管理器",它记录每个AI角色所感兴趣的事件.当事件发生,通知每个角色."事件管理器"负责检查处理分发事件.
与事件驱动系统相对应,触发器是AI角色能对其作出反应的任何“刺激源”,是他们触发了AI角色感兴趣的事件,通常触发器以一个中心点有一个球体立方体或者圆形,触发器非常常见,他们可以创建各种行为和事件。
游戏中有多个触发器以及感知器,可以通过一个管理中心——事件管理器,统一对他们进行管理。 所有触发器的基类——Trigger类:这个类包含了所有触发器共有的相关信息和方法。 所有感知器的基类——Sensor类,Sensor类包含了感知器的类型定义和变量,还保存了事件管理器
这个类负责管理触发器的集合。他维护了一个当前所有触发器的列表,当每个触发器被创建时,都会向事件管理器进行注册,加入事件管理器的列表中,事件管理器负责更新和处理所有的触发器,并且当触发器已过期需要移除时,删除他们。 事件管理器还维护了一个感知器列表,每个感知器创建时,向管理器注册,加入到感知列表中。
视觉感知可以使用不同的圆锥进行模拟不同类型的视觉,一个近距离大锥角的圆锥进行模拟视觉中的余光,远距离的视觉通过更长更窄的圆锥进行表示。