UE4每日学习笔记_AI篇

AI视觉感知配置


1.复制一份新的Task任务,修改PlayController,改为OwnerController,同时修改
Radius的值,修改为150,表示随机范围移动
2.在黑板中添加变量,是否看到(bool),然后在行为树中,在Sequence右键,添加装饰器(设计),设置变量值为是否看到,设置为否,下方修改为1写好的随机移动任务
3.在selector另一边填写之前写好的找玩家的方法.并也添加一个装饰器(黑板),并设置为true,其实就是ifelse.
4.行为树就这些,打开AI,并添加上视觉感知(AIPerception),右侧AIPerception中SensesConfig(感官配置),加号添加一个AISightconfig(AI视觉配置),打开,并在Detection by Affiliation(隶属侦查,就是侦查什么类型的Pawn)
把三个都选了,敌方Enemies,友方Friendile,Neutrals中立方
5.打开被看到的,也就是第三人称角色类,添加一个被看到的组件AIPerceptionStimuliSource,并添加一个SenseSight

UE4每日学习笔记_AI篇_第1张图片

 行为树


UE4每日学习笔记_AI篇_第2张图片

判定是否看到了玩家


 

AI调试


回车键左边的""键,即可打开VR调试模式,
有些情况下需要中断当前任务,Decorator的ObserverAborts值为Self时,可以立刻终止所在节点的任务和子任务值为LowPriority时,那么当执行处于较低优先级子树时,这个Decorator节点的Observer被激活,如果满足条件使得执行可以移动到较高优先级子树.较低子树将立即中止,跳转到这个Decorator所在的节点值为Both时所在节点和低优先级节点都会被中断。
这时,我们把没看到玩家,设置为self,一旦看到,立刻打断,看到玩家设置为Both,一旦没看到,当前和低优先级的也会被打断.
打开AiPawn中的由控制器控制旋转上,这个是我们控制ai,使得控制器转向一致,不需要这个,去掉,然后打开Pawn中的移动控制器,把朝向转向打开,这样转向就会平滑

UE4每日学习笔记_AI篇_第3张图片

 此处加上cooldown(冷却时间)使得移动不会判定过快而抽搐


NPC指定位置移动


1先建立一个Actor类,然后在里面建立一个Vector数组变量,可编译并且带有3D演示实例,并且在世界上设置任意点位置
2在放到世界的Pawn类NPC中,添加一个1中自定义的Actor类的引用,然后设置为可编译,并且在世界中给它赋值
3新建一个任务类,并添加两个blackBoardKeySelector,命名为PointArr,和PointArrIndex,设置为可编辑实例,然后再新建一个,添加一个PointArrIndex类型变量.设置同上
4.写法上思路就是当控制器接收AI的时候,转换为Npc类,然后获取其中的数组,并获取本身位置TransformLocation,加上设置的位置,等于世界上的实际位置.此处是根据下标记获取了实际的位置,另一个任务就很简单了,做一下下标的++即可,不超过实际,超过就重置,不超过就++

UE4每日学习笔记_AI篇_第4张图片
 

 


Npc循环移动/往复运动

循环简单,如图创建一个bool值,在黑板中纪录,在任务中实现,在AI中初始化

UE4每日学习笔记_AI篇_第5张图片

 任务中实现


UE4每日学习笔记_AI篇_第6张图片

 AI中初始化


NPC往复运动

思路:黑板建立一个Int变量,1的时候正向,-1的时候反向,设置初始值为1(注意,循环应取消勾选)

正向反向思路相似,如图下

UE4每日学习笔记_AI篇_第7张图片

正向实现 


UE4每日学习笔记_AI篇_第8张图片

反向实现 


你可能感兴趣的:(UE4,c++,ue4,经验分享)