黑板行为树 导入模块 AIModle,GameplayTask,NavigationSystem +球形检测+EQS环境查询 用来AI检测掩体
在黑板中用黑板拾取器拾取数据要匹配数据ID(关联黑板数据)
用重写initfromset()
void UBTTaskNode_FindNavPostion::InitializeFromAsset(UBehaviorTree& Asset)
{
Super::InitializeFromAsset(Asset);
//关联黑板键值拾取器到黑板数据
UBlackboardData* BBData = GetBlackboardAsset();
if (BBData)
{
OriginPosKey.ResolveSelectedKey(*BBData);
NavPostionKey.ResolveSelectedKey(*BBData);
}
}
利用导航来找到导航上的ai所在的点位置
并行树
service 要重写Service离得tick node(更新黑板数据,要将bNotifytick 打开)
//service中的初始化
//为了使每个不同的实例独立开
//允许每一个节点为当前使用行为树的对象创建一个独立的内存
对象里的实行 Resault 和Value 区别是 前者时从无到有 变化,,后者是 有的状态值得变化
找自定义的检测定义 可以打开Config文件中DefaultEngine.ini 里找自己的定义预设
//用来设置检测球的显示
//设置造成伤害
//发射检测
EQS环境查询
看的见和看不见的查询
EQS有单独的蓝图来进行传值使用重载函数
重写sequence节点 需要重写BTComositeNode, 其中GetNextChildHandle是用来决定走节点下哪个子节点的
感知系统:
AI需要感知组件 ,想要被感知的角色也需要加感知组件
添加噪音事件
Report Noise Event
想要修改AI控制器的阵营关系 ,需要重写其中的GetTeamAttitudeTowards()
在装饰器中,:在GameplayTagsTowards 节点中,需要将自己拥有标签的类去继承GameplayTowards的专有的接口,然后根据接口中的tags的函数来去识别标签。
是一种提供椎体范围来判定的装饰器
是一种类似于Wait效果的装饰器