黑板行为树 导入模块 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效果的装饰器

 

posted @ 2022-10-11 16:50  蜡笔小新紫南  阅读(87)  评论(0编辑  收藏  举报