AI模块技术框架1是关于构建智能体(AI)行为的一种设计模式,主要涉及状态管理和状态机的概念。在人工智能领域,这种框架常用于游戏AI或复杂系统中,使AI能够根据环境变化灵活地执行一系列动作。 核心类是这个框架的基础: 1. **AIStateRegister**:这是一个状态注册机,确保所有AI状态都在此注册后才能在状态机(FSM)中使用。它作为ScriptableObject存储数据,确保全局唯一性,并动态更新状态机内的状态引用。状态注册机包含一个字典,通过状态名获取状态类型,并有一个自定义editor,方便用户通过拖放方式注册状态脚本。状态脚本需实现特定接口,否则将被视为无效。 2. **AIState**:这是AI状态的抽象类,提供状态初始化方法,并定义了一些抽象函数,这些函数由具体状态实现,供FSM调用。 3. **AIFSMData**:这是一个ScriptableObject,用于保存状态机的状态转移图,允许在editor中创建和编辑状态间的转移。状态转移基于状态注册机中的已注册状态,并指定了不同条件下的下一个状态和初始状态。 4. **AIFSM**:负责控制状态机的更新。它接收AIFSMData进行初始化并运行状态逻辑。初始化时自动挂载状态脚本,因此设置好AIFSMData后,无需手动操作。状态机运行时,首先执行当前状态,然后检查是否满足转换条件,满足时根据转移图切换至新状态。 5. **AIActionController**:抽象类,控制AI的动画播放和网络同步。定义了多个虚函数供各状态调用。由于网络RPC不支持函数重载,每个需要RPC的函数名称必须唯一。 6. **AIReactiveInterface**:AI受击时需要实现的接口,用于获取被玩家攻击的相关参数。 7. **AIAgent**:AI代理的抽象类,管理FSM更新,控制AIActionController的调用,并响应玩家的攻击。不同的代理可以适应不同状态机的需求,还能设定状态机的更新频率,以适应网络同步限制。 工具类辅助AI模块的实现: 1. **AICamera**:模拟玩家视角,为AI创建一个检测区域,通过FOV和可视距离设置检测范围,判断目标是否在视线内。 2. **AIWeaponType**:定义AI的不同武器类型,以asset形式存储。 3. **AIWeapon**:基于AIWeaponType设置武器,指定枪口位置,定时射击功能使其不受FSM更新频率影响。 4. **Navigation**:利用Unity的寻路插件,实现AI的路径规划。需要预先烘焙寻路网格并为需要寻路的对象挂载NavMeshAgent组件。 该框架已实现的AI状态机包括: 1. **WanderAI**:通常表示AI的徘徊行为,可能用于闲逛、探索等场景。 2. **Turret**:可能代表一种固定位置的防御AI,如炮塔,其行为可能包括瞄准、射击等。 这个框架提供了全面的AI行为管理,结合了状态管理、动画控制、网络同步、视觉感知、武器使用和路径规划,为创建复杂的AI行为提供了坚实的基础。
剩余11页未读,继续阅读
- 粉丝: 37
- 资源: 351
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0