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

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

相关推荐
△曉風殘月〆5 小时前
WPF MVVM入门系列教程(二、依赖属性)
c#·wpf·mvvm
逐·風7 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
_oP_i8 小时前
Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式
unity·游戏引擎·webgl
m0_6569747410 小时前
C#中的集合类及其使用
开发语言·c#
九鼎科技-Leo10 小时前
了解 .NET 运行时与 .NET 框架:基础概念与相互关系
windows·c#·.net
代码盗圣12 小时前
GODOT 4 不用scons编译cpp扩展的方法
游戏引擎·godot
九鼎科技-Leo13 小时前
什么是 ASP.NET Core?与 ASP.NET MVC 有什么区别?
windows·后端·c#·asp.net·mvc·.net
.net开发13 小时前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
小乖兽技术13 小时前
C#与C++交互开发系列(二十):跨进程通信之共享内存(Shared Memory)
c++·c#·交互·ipc
幼儿园园霸柒柒13 小时前
第七章: 7.3求一个3*3的整型矩阵对角线元素之和
c语言·c++·算法·矩阵·c#·1024程序员节