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

文章目录

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

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

1 行为树

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

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

image-20240722232553048

2 行为树驱动方式

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

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

    状态类型包括:

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

3 行为树结点分类

3.1 控制节点

(1)序列(顺序)节点

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

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

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

(2)选择节点

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

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

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

(3)并行节点

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

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

(4)装饰节点

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

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

3.2 执行节点

(1)动作节点

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

(2)条件节点

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

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

(3)黑板节点

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

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

4 行为树与状态机比较

  1. 优点

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

  2. 缺点

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软蓝屏事件:网络安全与系统稳定性的反思与前瞻

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

探索深度学习在图像识别领域的创新应用

摘要: 本文深入探讨了深度学习在图像识别领域的最新进展和创新应用。通过对卷积神经网络(CNN)等模型的研究,分析了其在人脸识别、物体检测和场景理解等方面的卓越表现,并展望了未来深度学习技术在图像识别领域的发展趋…

javascript 的执行上下文与作用域

目录 1. 初步了解 上下文(context)2. 全局上下文(global context)3. 上下文栈 (context stack)4. 作用域链( scope chain)5. 作用域(scope)6. 作用域链增强7. 变量声明7.1 var 声明变量7.2 let 声明变量7.3 const 常量声明 1. 初步了解 上下文&#xff0…

React前端面试每日一试 2.JSX是什么?JSX如何工作?

JSX是什么? JSX(JavaScript XML)是React引入的一种语法扩展,用于在JavaScript中编写类似HTML的结构。它让我们能够直观地描述UI的结构,同时保留JavaScript的编程能力。尽管JSX看起来像HTML,但它最终会被编…

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化:共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数 3 算法仿真3.1 ROS C实现3.2 Python实现 0 专栏介绍 🔥课程设计、毕业设计、创新竞赛、学术研究必备!本专栏涉及更高阶的…

Unity3D UGUI适配不同分辨率详解

前言 在Unity3D开发中,UGUI(Unitys Graphical User Interface)是构建用户界面(UI)的重要工具。然而,随着移动设备和桌面设备的分辨率日益多样化,确保UI能够在不同分辨率下良好显示变得尤为重要…

CAS乐观锁原理

1、什么是CAS? compare and swap也就是比较和交换,他是一条CPU的并发原语。 他在替换内存的某个位置的值时,首先查看内存中的值与预期值是否一致,如果一致,执行替换操作。 这个操作是一个原子性操作。 Java中基于Un…

手机免费恢复照片的软件有哪些?这2个工具来帮忙

照片是我们情感的载体,是记忆的碎片。它们无声地诉说着过去的故事,记录着生活中的点点滴滴。但意外常常是突如其来的,当发现手机照片丢失时,我们往往心痛不已。 不用担心,这场看似绝望的危机,实则有解决之…

C++ OpenCV 实现多张图片叠加 叠加文字

C OpenCV 实现多张图片叠加 叠加文字 在C中使用OpenCV叠加多张图片以及添加文字的基本步骤如下: 加载多张图片。 确定叠加位置。 使用cv::addWeighted叠加图片,可以为叠加的图片添加透明度。 使用cv::putText在图片上添加文字。 显示或保存结果图片…

Sql Server缓冲池、连接池等基本知识(附Demo)

目录 前言1. 缓存池2. 连接池3. 彩蛋 前言 基本的知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)Mysql优化高级篇(全)Mysql底层原理详细剖析常见面试题(全) 1…

Go 环境安装配置

1、下载 wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz 2、安装 sudo tar -xvf go1.21.6.linux-amd64.tar.gz -C $HOME/3、设置环境变量及代理 # 打开 ~/.bash_profile,输入: export PATH$PATH:$HOME/go/bin # 设置 Go 语言代理 export GOPROXYhttps://go…

AI发展下的伦理挑战

AI发展下的伦理挑战,应当如何应对? 人工智能飞速发展的同时,也逐渐暴露出侵犯数据隐私、制造“信息茧房”等种种伦理风险。随着AI技术在社会各个领域的广泛应用,关于AI伦理和隐私保护问题日趋凸显。尽管国外已出台系列法规来规范…

ls lsattr lsblk lscpu lsdiff lshw lsinitrd lsipc lslocks lslogins

ls: 描述:列出目录内容。用法:ls [选项] [文件或目录]示例: ls:列出当前目录的文件和子目录。ls -l:以详细列表形式显示目录内容。ls /path/to/directory:列出指定路径下的内容。 lsattr: 描述:…

【VSCode】安装 【ESP-IDF】插件及【ESP32-S3】新建工程和工程配置

一、搭建基础工程 二、基础工程的文件架构解析 三、调试相关工具介绍 1、串口下载2、JTAG 下载与调试 四、工程的文件架构解析 五、基础工程配置 一、搭建基础工程 在 VS Code 中新建 ESP-IDF 基础工程的步骤如下: 1、启动 VS Code 并打开命令面板 按下“Ctrl…

逆向案例二十八——某高考志愿网异步请求头参数加密,以及webpack

网址:aHR0cDovL3d3dy54aW5nYW9rYW90Yi5jb20vY29sbGVnZXMvc2VhcmNo 抓包分析,发现请求头有参数u-sign是加密的,载荷没有进行加密,直接跟栈分析。 进入第二个栈,打上断点,分析有没有加密位置。 可以看到参数…

Chapter17 表面着色器——Shader入门精要学习

Chapter17 表面着色器 一、编译指令1.表面函数2.光照函数3.其他可选参数 二、两个结构体1.Input 结构体:数据来源2.SurfaceOutput 三、Unity背后做了什么四、表面着色器的缺点 一、编译指令 作用:指明该表面着色器的 表面函数 和 光照函数,并…

【React】深入探索React:表单控制、组件通信、副作用管理、自定义Hook

一、React表单控制 表单控制是React应用中常见的需求,React Hooks提供了两种方式来实现:受控组件和非受控组件。 1.1 受控组件 受控组件是将表单输入的值保存在组件的状态中。这样,表单数据就完全由React控制。 import React, { useState…

【系统架构设计 每日一问】三 Redis支持事务么,Redis的事务如何保证

实际上,关于Redis事务的说法“Redis 的事务只能保证隔离性和一致性(I 和 C),无法保证原子性和持久性(A 和 D)”并不完全准确。下面我将分别解释Redis事务的四个特性:原子性(Atomicit…

探索Mojo模型的超参数优化:自定义搜索策略全解析

探索Mojo模型的超参数优化:自定义搜索策略全解析 在机器学习领域,超参数的调整是提高模型性能的关键步骤。Mojo模型,作为一种高效的模型部署方式,其超参数的搜索同样至关重要。本文将深入探讨如何在Mojo模型中实现自定义的超参数…

5.波士顿房价预测(KNN,决策树,线性回归)

波士顿房价预测 1. 机器学习中的任务分类2. 波士顿房价预测2.1 分析数据2.2 比较 MAE 和 MSE2.2 代码 1. 机器学习中的任务分类 有监督学习(supervised):有特征也有标签 分类问题 classification预测离散量 回归问题 regression预测连续量 …