UE4 AI基础笔记

目录

AI controller

行为树与黑板

导航组件

普通蓝图中的检测节点

EQS环境查询系统

AI两种巡逻方式

AI动画

AI运行时调试信息显示


AI controller

  • 新建继承AI Controller蓝图类,角色使用该类来控制

    UE4 AI基础笔记_第1张图片

     

  • 行为树的控制在该蓝图中处理

 

行为树与黑板

  • BehaviorTree

    • run behavior tree

    • 三种流程控制

      • sequence 顺序执行

      • selector 选择一个执行

      • simple parallel 简单并行(不常用)

    • task:行为树都以task结束(叶子节点),执行具体动作,可以自定义

      • 自定义task可以override:receive excute ai

      • task结束一般要finish excute,否则卡死在task

      • 如果需要一定时间过渡的task,可以先不finish,覆盖receive tick ai实现耗时操作后再finish excute

    • add service:通过服务做循环查询处理, 可以自定义

      • 自带的service:EQS(环境查询)

      • 自定义serve可以override:receive tick ai

  • add decorator:接收条件判断,用于selector流程选择

    • Move To指定的key必须在BD中设置key base class 为Actor

  • blackboard

  • 设置黑板数据的两种方法

    • 普通蓝图中设置值:get blackboard --- make name(指定黑板中的变量Name) --- set value as ... (不推荐,一般不会直接在蓝图设置)

    • 自定义Task、Service:新建blackboard key selector类型变量用于设置黑板数据:set blackborad value as(推荐)

 

导航组件

  • Nav mesh bound volume

    • 缩放选定范围后按P,生成导航范围

 

普通蓝图中的检测节点

  • 射线检测:line trace(6种)

  • 球形检测:sphere race

 

EQS环境查询系统

  • EQSTestingPawn用于测试调试EQS(直观查看目标追踪或点生成情况),设置EQS template为待测EQS

  • Generators生成不同类型的点

    • Donut生成甜甜圈形状点分布

    • Circle生成环状点分布

    • ActorOfClass:查询actor,用于目标追踪

    • 一个EQS可以产生多个多个点分布或追踪多个目标

  • 添加test类型,不同组合可以产生更复杂的EQS功能

    • Trace:射线检测

      • 目标追踪:选filter only,取消勾选Bool Match(表示中间不能有碰撞)

    • Dot:向量点积,如玩家与AI夹角判断(视线扇形控制)

      • Score:根据函数和条件打分,可以指定线性/square等打分函数

      • Filter:过滤部分点,根据最值或范围设定保留的点

      • Mode:通过rotaion(对象的forward向量)确定向量还是两点确定向量

    • Distance

      • Score:根据函数和条件打分,可以指定线性/square等打分函数

      • Filter:过滤部分点,根据最值或范围,TestingPawn红色标识的表示查询到的,蓝色表示过滤的

      • Filter and score:过滤部分点后再打分

      • TestMode:选择2D、3D或单一z轴方向的测距

      • Distance to:指定测距目标Context,可以自定义

        • Context自定义需要创建蓝图继承自EnvQueryContext并覆盖实现相关函数

        • Context中不能按Task自定义的方法新建selector,只能使用第一种方法:get blackboard --- set value as

    • PathFinding:寻路,保证路径可达的目标才能被查询到

  • 行为树使用Run EQS

    • 可以作为service,也可以作为一个task,或者被自定义task/service包裹(调用)

    • 设置template为指定的EQS,设置BD key为EQS查询的result key(BD中新建)

  • 设置RunMode:查询单个最佳,或从top5/25中随机选一个(前提是test purpose使用了score,top策略从打分最高的点随机选择一个)

  • 包裹EQS自定义Service方法:

    • run EQS Query :异步调用,需要用事件绑定

    • get query results:获取查询结果

  • Flow Control - Observer aborts:控制优先级,当执行失败是立马放弃该分支

 

AI两种巡逻方式

  1. 基于路径规划的巡逻

    • 设置路点蓝图类:普通Actor,游戏中hide,存储同类型变量NextWayPoint

    • EQS寻找初始巡逻点,然后自定义任务:每次从路点对象中获取并设置下一个巡逻点

  2. 基于随机点选择巡逻

    • EQS直接寻找点分布中的随机一个进行巡逻

 

AI动画

  • random sequence player

  • 行为树通过自定义Task:设置角色中的状态变量控制状态机切换

  • 行为树通过自定义Task:设置角色中的状态变量控制混合by enum中的pose

  • Task中可以播放蒙太奇动画

  • 动画状态机的blend时间和曲线控制让状态切换更柔和

  • 动画添加notify实现伤害/声音/粒子特效等叠加,动画蓝图调用,角色里实现具体事件

 

AI运行时调试信息显示

  • 运行时引号键开启

  • 小键盘3键开启EQS信息

  • 小键盘1、2键打开&关闭AI、行为树

  • 小键盘 / 键打开&关闭EQS表格

你可能感兴趣的:(UE,UE4,虚幻引擎,游戏开发,AI)