配置表
AI系统
-
BaseDirector:一个AI实例下(BaseDirector)所有AI数据都能访问到的一个公共变量区域
- AIMark:存放一些AI产生的临时变量(比如播放变身动画后,标记一下现在为变身状态)
- enemysAICache:存放了敌人的缓存
-
AIDirectorTree
- 这个主要就是转接到行为树的
- SetOverwriteBehavior:更换AI的行为树,可以在初始化或者一些其他情况进行AI行为树的替换
- 比如出怪点,在A地点的怪可能与B地点的不一样。这样可以在出怪点产生怪物的时候,将其行为树覆盖为其他行为树,就可以有不同的行动逻辑。
- ResetOverwriteBehavior
- 还原会默认的行为树
行为树
-
行为树路径:Assets/Game/Resources/AI/BattleAI
-
默认的行为树名字就是战斗对象的Id
-
BDAIMove:移动数据容器节点
-
BDAIAction:动作数据容器节点
-
BDAIConditional:判断数据容器节点
-
BDAIIdle:待机数据容器节点
-
节点
-
- 通常情况下是不需要修改
- 主要的数据是用 BaseAIRunScriptable (ScriptableObject)实现的
-
AI数据初始化
- Target : 会在初始化的时候(将行为树加载到战斗对象上时)被初始化
- Target 会被赋值为当前的战斗对象
- 比如说,如果是狼的行为树,这个时候Target获取到的就是狼)
扩展AI数据配置
- Target : 会在初始化的时候(将行为树加载到战斗对象上时)被初始化
AI数据通用API
- BaseAIScriptableObject
- 该类是所有AI数据的基类
- 主要用于关联行为树、StaticObject
- TaskFailure:数据运行失败
- TaskSuccess:数据运行成功
判断
-BaseAIConditional
-直接继承BaseAIScriptableObject
动作
- BaseAIAction:动作数据的基类
- 动作通常不是循环的,播放一次性动画的
- 包括
- ActionRun:播放角色动画
- OnAnimationPlayEnd:ActionRun完成后会调用
其他
- BaseAILoop:可随时随时打断的数据
- 其子类:
- BaseAIMove
- BaseAIIdle
- BaseAIRunScriptable:BaseAILoop、BaseAIAction 的父类,直接继承BaseAIScriptableObject
- 封装了一个:Effects 变量,可以放一些进入这个数据和退出这个数据的一些特效
新增AI数据
- 新增AI数据步骤
- 先选中AI行为树的文件夹,这样就会在对应行为树下自动添加数据以及创建文件
- 创建后数据被添加到行为树变量列表中
- 创建对应类型节点容器,关联变量