com.unity.multiplayer.samples.coop-2.5.0\Assets\Scripts\Gameplay\GameplayObjects\Character\AI
1. 系统概述
AI系统是一个基于状态机的智能体控制系统,主要用于处理游戏中NPC角色的行为逻辑,包括空闲状态、攻击状态等。系统采用了组件化架构,与服务器端角色逻辑紧密集成,实现了高效的AI行为管理。
2. 核心组件与架构
2.1 状态机基础架构
AIState.cs- AI状态基类,定义了所有AI状态必须实现的接口:
IsEligible()- 检查状态是否适用Initialize()- 状态初始化Update()- 状态更新逻辑
2.2 AI核心控制器
AIBrain.cs- AI核心逻辑处理类:
- 管理AI状态切换(Idle/Attack)
- 实现仇恨系统(Hate方法及GetHatedEnemies列表)
- 提供AI状态选择机制(FindBestEligibleAIState)
- 管理与服务器角色和动作系统的交互
2.3 具体状态实现
IdleAIState.cs - 空闲状态
- 功能:当AI没有仇恨目标时处于此状态
- 核心逻辑:
DetectFoes()- 定期扫描周围玩家,检测范围内的敌人- 使用平方距离计算优化性能(避免昂贵的sqrt操作)
- 通过PlayerServerCharacter.GetPlayerServerCharacters()获取所有活跃玩家
- 当检测到敌人时,调用AIBrain.Hate()添加仇恨目标
AttackAIState.cs - 攻击状态
- 功能:当AI有仇恨目标时处于此状态
- 核心逻辑:
- 选择合适的攻击目标(ChooseFoe())
- 选择可用的攻击动作(ChooseAttack())
- 执行攻击动作序列
- 处理追逐行为和攻击队列
- 处理眩晕状态等特殊情况
2.4 玩家角色管理
PlayerServerCharacter.cs