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 小时前
C#.NET dapper 详解
c#·.net
死也不注释4 小时前
【鸡零狗碎记录】
unity·c#
Maybe_ch4 小时前
.NET-键控服务依赖注入
开发语言·c#·.net
★YUI★7 小时前
学习游戏制作记录(剑投掷技能)7.26
学习·游戏·unity·c#
小乖兽技术8 小时前
C#与C++交互开发系列(二十四):WinForms 应用中嵌入C++ 原生窗体
c++·c#·交互
I'mSQL9 小时前
C#与WPF使用mvvm简单案例点击按钮触发弹窗
开发语言·c#·wpf
工藤新一OL10 小时前
把xml的格式从utf-8-bom转为utf-8
xml·c#·asp.net·.netcore·visual studio
henreash10 小时前
NLua和C#交互
开发语言·c#·交互
SAJalon14 小时前
C#集合全面解析
c#
SAJalon16 小时前
C#数组全面解析
c#