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 流程,会比较麻烦。

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

相关推荐
歪歪1001 小时前
在C#中详细介绍一下Visual Studio中如何使用数据可视化工具
开发语言·前端·c#·visual studio code·visual studio·1024程序员节
Eiceblue1 小时前
如何通过 C# 高效读写 Excel 工作表
c#·visual studio·1024程序员节
张人玉1 小时前
WPF 触发器详解:定义、种类与示例
c#·wpf·1024程序员节·布局控件
阿登林5 小时前
C# .NET Core中Chart图表绘制与PDF导出
c#·1024程序员节
井队Tell9 小时前
打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第五天)
学习·3d·unity
yi碗汤园10 小时前
【一文了解】八大排序-插入排序、希尔排序
开发语言·算法·unity·c#·1024程序员节
小朩11 小时前
数据结构C语言
数据结构·c#·1024程序员节
CN.LG12 小时前
C# 企业微信机器人消息推送
c#·企业微信·1024程序员节·机器人推送
唐青枫12 小时前
C#.NET ArrayPool 深入解析:高性能内存池的实现与应用
c#·.net
张人玉12 小时前
WPF 核心概念笔记(补充示例)
c#·wpf·1024程序员节·布局控件