能帮到你的话,就给个赞吧 😘


文章目录

配置NPC AI

NPC指定控制器

控制器运行行为树

AI 测试

’键:开启debug模式

屏幕中心要对准要测试的NPC

在这里插入图片描述

4:显示感知数据

get blackboard:角色蓝图也可直接调用

停止和启用AI

获取控制器——获取大脑——停止和开始

cool down 和 wait 的 区别

观察黑板值:节点实时按照黑板值运行,而无需运行完再更新

do once 在 任务中不起作用

获取actor位置和获取世界位置 区别

获取玩家角色

AI move to

Target Actor:跟踪对象,持续跟踪此Actor——有值时,Destination失效

Radius:与目标间的距离

stop:到间距时是否停止

获取AI控制器

AI—AI控制器:同玩家控制器一样,NPC由AI控制器控制

AI控制器:通过行为树或代码 实现 控制:将控制器与角色解耦,使得可以独立编写。

控制器可直接使用黑板变量

创建控制器:蓝图——AI controller

角色指定控制器

功能

运行行为树

处理导航系统,控制移动

处理感官系统

初始化黑板数据——通过黑板与其他AI模块通信

获取黑板
创建文字命名

行为树:AI逻辑:节点的执行流:根据黑板执行行为

节点类型

流程节点:非叶节点:可以生长

任务节点:叶子节点:不能生长

附加节点:附加在流程&任务节点

行为树执行流:行为树的每次执行必须从根开始

第一次执行:从根节点到叶子节点

第二次执行:只有从根节点返回到叶子节点 才会开始第二次执行

节点优先级:行为树左侧节点优先级更高,优先执行:序号提示

流程节点

选择:分支节点:一次只能有一个分支成立&且只能由上到下判断:等价于Switch

继续执行:子节点执行失败后,继续下一节点。
返回
任一一支分支成功,selector返回成功
全部节点执行失败,返回失败
没有子节点,返回失败

顺序:并非分支而是一组任务:任务之间顺序执行:等价于代码块

继续执行:子节点执行成功后,继续下一节点。
返回
任一一支分支失败,sequence返回失败
全部节点执行成功,返回成功
没有子节点,返回失败

并行:主&辅任务并行执行。即单个任务的成功或失败不影响其他任务的执行。

直接:主任务完成,并行直接结束。
延迟:主任务完成,等待次任务完成结束。

任务节点:叶子节点:执行流的返回节点

完成执行:叶子节点返回

接收执行AI:重载

控制器
控制角色

附加节点:为控制节点和执行节点提供判断

装饰器:分支执行前的条件

装饰器
分支执行前的条件
分支执行时的中止:相当于break
新建装饰器
重载:perform condition check AI:
黑板键
观察器中止:中止分支并返回失败
self:结果改变时,终止自身整个分支的执行流
both:结果改变时,终止自身和兄弟的执行流
通知观察者
结果改变:黑板键的 导致条件结果改变的 改变
值改变:黑板键的任意改变

服务:为节点提供数据服务。数据由节点指定。服务会在后台实时更新数据——只要分支运行,就一直在后台运行

装载节点必须将黑板key公开,使得可以由节点指定。

行为树由控制器指定:运行行为树

感知组件:使AI可以发现周围的目标,并更新到黑板中:AIperception:只能感知角色

感官配置

视觉:使AI可以看到物体

听觉

事件

目标感知信息更新时:获取和丢失目标时 触发

目标感知更新时:感知组件感知到外界刺激源

actor:感知到的actor
stimulus:感知到的刺激物
successfully:接收到Actor的刺激信号

从刺激物获得感官类:判断当前感官类型

视觉:设置视线范围,视线范围内的物体都会被感知:视线会被物体遮挡

视线半径:视野距离

失去视线半径:丢失视野但仍能追踪的最大距离

视觉半角:视野半角

按归属检测:通常需要全部勾选

年龄:记忆时间:0:不会消失

主导感官:多个感官同时触发时,主导感官触发。

听力:监听声音,需要其他对象主动调用声音。

制作噪点:发出声音,触发感官更新。

触觉

预感:预测actor几秒后的状态,需要主动调用预感。

请求pawn预感事件:预测目标几秒后的状态。触发感官更新。

move to预感位置,必须 勾选 观察到的黑板值容差

EQS:计算测试值,从生成的item中选择所需要的item,并将其更新到黑板中

eqsTestingPawn:测试EQS

测试结果

橙色为保留
蓝色为删除

run EQS

运行EQS

返回最优的item

将item更新到黑板

EQS原理:测试器计算每个item的测试值,再根据测试值筛选出最优的item,并更新到黑板中

生成器:生成item

投射数据
检测模式:item的生成位置
导航:在导航网格体上生成
通道几何体:在几何体上生成:几何体必须要有碰撞
投射垂直偏移:item的z轴高度
donut:环形
弧形方向:指定环形方向
角度:以弧形方向两边各角度值生成环形

测试器:计算每个item的测试值

distance:计算 item 到 上下文 的距离
trace:判断 item 到 上下文 之间 是否有障碍物
pathFinding Batch:判断 item 到 上下文 是否可达
overlap:判断 item 与 场景物体 是否发生 重叠
dot:计算两个向量的乘积:值域[-1:1]:常用于区分 前方&后方&两侧
旋转:上下文的向前向量
1:完全同向
-1:完全反向
0:垂直

过滤器

布尔匹配:设置要保留的item

环境查询上下文:运行EQS所必要的信息

指定生成actor和测试actor

envEqsContext_Query:返回运行eqs的actor

自定义:envQuertContext_BlueprintBase

重载:provideSingleActor

分数:根据测试结果 计算每个item的得分

水平轴:测试结果

垂直轴:分数

生成器:选择生成器,生成 检测点item

数据绑定:查询参数:可以在run eqs中进行设置,并且还可以绑定到黑板中

测试:选择测试项,对每个item得出测试结果,再对测试结果过滤和评分

先过滤
再评分
水平轴:测试结果:由低到高
垂直轴:得分:由低到高

run EQS:行为树运行EQS查询,将查询出最符合条件的item赋值给黑板键

运行模式—25%随机项:用于从多个符合条件的item中随机选择一个

导航网格系统:负责AI自动寻路,被大部分寻路节点调用。p:调试键

设置:项目设置——导航网格体

绘制多边形边缘

绘制多边形开销

运行时生成——仅动态修改器

cost default:成本:成本越大,则越不能走,为障碍

障碍

静态障碍

导航修改器体积
区域类
自制区域类:NavArea:修改成本

动态障碍

actor:通过运行时生成actor生成障碍
添加碰撞体/并 设置 动态阻碍
添加修改器

导航链接:实现跳跃:也可用射线检测实现跳跃

黑板:基于黑板键存储各类型的容器:需要与行为树绑定

通过黑板键访问数据:通常作为行为树节点参数使用

指定黑板键:黑板键选择器
获取键值

指定黑板键:黑板键选择器
设置键值

通过黑板访问数据:通常在行为树外部使用

获取黑板
获取黑板值:指定键名

获取黑板
设置黑板值:指定键名

创建变量

actor

创建object
将基类改为actor

黑板键:用于访问黑板变量。黑板键无法在节点内直接设置值,只能公开在节点外设置。

行为树间的节点 数据并不互通,可将节点看作一个单独函数,函数间要通信,则必须通过黑板这个全局数据库。

每个节点可直接 访问 全局数据库

行为树指定黑板

控制器获取黑板

AI动作控制器:AI决策出的动作具体执行

AI调试器

AI事件

Receive Activation AI

Receive Execute AI

事件接收启用AI

装饰器

流控制

观察器中止:装饰器是否可以中止节点

self:中止自身

low priority:中止权限更低的节点:数字大于self的节点

both:中止self和low

cooldown 冷却:使节点只执行一次,并进入CD。红色代表节点已执行过。

行为树蓝图(任务/服务)的变量 退出后值不会消失,下次进入依旧还在

控制器

获取受控pawn

EQS测试

overLap:检测是否存在指定的东西

pathFinding:路径查询:检测从context到item可达的路径,删除不可达的item。可达分数为1

trace:射线检测:检测看不见context的item:从item发出射线,检测到context 中是否有障碍物。存在分数为1

布尔匹配:反转结果

distance:距离:检测item与context间的距离:距离越远分数越大

得分因数:反转结果

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐