2024-07-22 Unity AI行为树1 —— 框架介绍

文章目录

  • [1 行为树](#1 行为树)
  • [2 行为树驱动方式](#2 行为树驱动方式)
  • [3 行为树结点分类](#3 行为树结点分类)
    • [3.1 控制节点](#3.1 控制节点)
    • [3.2 执行节点](#3.2 执行节点)
  • [4 行为树与状态机比较](#4 行为树与状态机比较)

本文章参考 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。

1 行为树

​ 行为树(Behavior Tree,BT)在游戏 AI 中是一种用于控制游戏角色的人工智能技术。

​ 在游戏 AI 中,对象的动作和行为往往是提前编辑好的(比如移动,攻击等),但执行行为的时间或地点是不确定的(比如何时朝目标移动,何时攻击目标等)。可以使用行为树来实现这些对象的决策任务。

2 行为树驱动方式

  1. 从根部开始往下执行,逐级进入子节点,每个节点都会有评估函数,确定节点状态。

  2. 每个节点在评估后会返回一个状态,根据节点状态,决定下一步的行为。

    状态类型包括:

    • 成功;
    • 失败;
    • 运行中。
  3. 每帧重复上述步骤,从根部向下执行。

3 行为树结点分类

3.1 控制节点

(1)序列(顺序)节点

​ 按顺序执行所有子节点,直到其中一个子节点失败。

​ 主要用于表示顺序执行的行为,列入执行一系列任务

  • 如果所有子节点都成功,序列节点返回成功;
  • 否则,返回失败。

(2)选择节点

​ 选择其中一个子节点执行,通常是第一个成功的子节点。

​ 主要用于在多个行为中选择一个适用的行为。

  • 如果没有子节点成功,返回失败;
  • 否则,返回成功。

(3)并行节点

​ 同时执行多个子节点,可以根据一定策略(例如,全部成功、任一成功等)来处理子节点的状态。

​ 主要用于同时执行多个相关的行为,例如同时巡逻和观察周围环境。

(4)装饰节点

​ 修改或包装其子节点的行为,可以用于限制执行次数、延迟执行、修改返回状态等。

​ 常见的装饰节点包括重复节点、延迟节点等。

3.2 执行节点

(1)动作节点

​ 执行具体的行为(移动、攻击、跳跃等),没有子节点,表示行为树的最终叶子节点。

(2)条件节点

​ 评估一个条件,并返回成功或失败。

​ 一般用于决定下一步行动(比如检测敌人是否在射程内)。

(3)黑板节点

​ 用于读取和写入数据,以在行为树节点之间共享信息。

​ 主要用于存储和传递状态信息,例如目标位置、敌人列表、环境变量等。

4 行为树与状态机比较

  1. 优点

    相对于有限状态机,行为树的拓展性更强,灵活性更强,更加模块化。

  2. 缺点

    如果没有图形化编辑器或者配置表,通过代码来添加 AI 流程,会比较麻烦。

​ 建议配合图形化编辑界面使用行为树。

相关推荐
小小数媒成员2 小时前
UGUI原理(一)
开发语言·游戏·unity·游戏引擎
WarPigs2 小时前
C#把byte[]以十六进制打印,带分割符
c#
暴走约伯3 小时前
【VFX工具链源码拆解 04】拯救丢失的绑定:Timeline 一键克隆与层级相对路径重映射算法
unity·c#·游戏引擎·硬件工程
1-1=03 小时前
C# 反射
c#·.net·.netcore
步步为营DotNet4 小时前
.NET 可观测性选型:Metrics、ActivitySource、EventSource 到底该用哪个
c#·.net·metrics·可观测性
小小数媒成员5 小时前
Unity UGUI布局组件(LayoutGroup、ContentSizeFitter、LayoutElement)详解
unity·游戏引擎
tealcwu5 小时前
【Unity基础】Unity输入与Time.deltaTime的使用原则
unity·游戏引擎
chen_22715 小时前
godot做仪表hmi
游戏引擎·godot
吃一碗粉只付一碗钱16 小时前
16-SqlSugar多库ConfigId与按实体选连接
sqlserver·c#
rockey62717 小时前
AScript之字符串模板
c#·.net·script·expression·动态脚本