Unreal Engine:行为树

一、创建相关蓝图

Character:AI角色

Animation:AI动画

AIController:AI控制器

BehaviorTree:行为树

BlackBoard:黑板

在Character里绑定网格体、动画、Pawn:AI控制器

=======================基础========================

  1. 选择器(Selector):

    • 选择器是一个有多个子节点的组合节点。
    • 选择器从左到右依次遍历其子节点,一旦找到一个成功(返回成功状态)的子节点,它就会停止遍历并返回成功状态。
    • 如果所有子节点都返回失败状态,选择器将返回失败状态。
    • 选择器通常用于实现多个可能的行为之一的选择,只要有一个子节点成功,就会执行相应的行为
  2. 序列器(Sequence):

    • 序列器也是一个有多个子节点的组合节点。
    • 序列器从左到右依次遍历其子节点,只有当所有子节点都成功才会返回成功状态。
    • 如果其中一个子节点返回失败状态,序列器将停止遍历并返回失败状态。
    • 序列器通常用于实现一系列行为按照顺序执行的情况,只有当所有行为都成功才会执行下一个行为

 

Flow:

tick检查节点运行结果,有三种结果:成果、失败、运行中。还在运行中就下一个tick再检查。

 

====================实例======================

A. 一个简单的实现:在圆内随机移动

在Character事件图表:

 在场景内创建导航网格体,按P可以查看可移动区域

 B. 用行为树控制移动到随机地点,等待2s,再移动

1. 黑板中创建变量TargetPoint,向量类型,用来存储随机出来的目标点

2. 行为树中创建相关逻辑:

 3. 其中的任务:FIndMoveTarget逻辑,这一步将随机生成的位置存进了黑板中

MoveTo和Wait是自带的

4. MoveTo要从黑板中读取目标点

5. 在AIController中设置开始时运行该行为树逻辑

 C. 实现NPC自由移动,看到玩家后跑向玩家,玩家离开视线跑到玩家最后视线内位置,然后恢复自由移动(视觉感知)

AI控制器:添加AI感知组件,在细节面板配置感官

行为树逻辑:

 黑板存储了玩家角色和玩家上一次出现在视线内的位置

 AI控制器逻辑:函数输入参数(Actor、AI刺激物)

 

posted @ 2023-09-07 10:47  番茄玛丽  阅读(188)  评论(0编辑  收藏  举报