1、AI角色感知的信息多种多样,通常会包含视觉和听觉信息,也可能包括脚步声、死去的同伴或敌人等。
其中,视线查询几乎是必不可少的,一般通过 Raycast 调用实现
在游戏中,AI角色可以通过两种方式来获得游戏信息——轮询和事件驱动
轮询是积极地观察世界获得信息
而事件驱动是通过坐等消息地方式来获得信息
2、在事件驱动的感知系统中,有一个中心检测系统,被称为“事件管理器”。
——记录每个AI角色所感兴趣的事件,并负责检查、处理和分发事件。
事件检测机制与事件管理器也常常分开实现,在采用基于触发器的事件检测方法中:
对事件感兴趣的角色通常称为“监听者(listener)”,必须事先向事件管理器注册,以确定被告知何种信息
告知的方法最简单的就是以 事件 为参数,调用某个函数
3、事件驱动感知系统
Trigger、Sensor和TriggerSystemManager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//所有触发器的基类,视觉触发器和听觉触发器是它的派生类
//包含所有触发器的共有信息和方法,如当前位置、作用半径、是否已完成使命而需要被移除等
public class Trigger : MonoBehaviour {
//保存管理中心对象
protected TriggerSystemManager manager;