IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity3D Behavior Tree行为树简单介绍及资源分享 -> 正文阅读

[游戏开发]Unity3D Behavior Tree行为树简单介绍及资源分享

昨天看了下《失控玩家》这个电影,发现一直以来也没有认真去研究过游戏AI的设计,于是今天就想边记录边学习的方式去研究游戏AI设计思路。

平台暂时还是基于U3D,官方暂时还没有AI插件,所以这边还是用U3D的第三方插件Behavior Tree。核心包可以点击链接下载U3D行为树1.6.6核心包

行为树行为树,顾名思义肯定是树状结构,Behavior Tree也离不开这点,参考下图。

?

?游戏的一个行为树AI最终其实就是图上的树状结构,由一个一个的节点组成。而在Behavior中,整体将这个节点分为了三大类: composite、decorator、leaf,如下图所示。

  • composite:组合节点,下面至少要有一个子节点。
  • decorator:装饰节点,下面有且只有一个子节点。
  • leaf:叶子结点,无子节点。

可以理解composite是一个逻辑组合,leaf可能是具体的某个单一逻辑,而decorator则是对leaf的一个额外修饰,例如让其循环执行,又或者将其返回结果取反等等。

在Behavior Tree中,实际上上面三类之下又会分为很多小类,例如composite中,最重要的两个节点便是selector,sequence。

  • selector,从左到右依次执行子节点,当任一子节点返回true后,结束执行。
  • sequence,从左到右依次执行子节点,当任一子节点返回false后,结束执行。

?

?上面描述或许有些抽象,那基于下面的图可以更具体的描述这两个节点的区别。

?

?如上图所示,selector的子节点只能成功执行一个,且会基于从左到右的优先级关系依次校验,

  1. eat pizza,吃披萨,当该节点执行成功,意思是吃到了披萨,那后面汉堡、意面就不去吃了。
  2. eat burger,吃汉堡,当披萨没吃到,执行该节点,若吃到了汉堡,那意面就不吃了。
  3. eat pasta,吃意面,当前面披萨、汉堡都没吃到,再来执行该节点,才能吃意面。这也是最后一步,倘若这个节点也返回失败后,则整个selector节点便会返回Failture。

?所以selector其实可以理解是在做选择,会给予设置好的节点顺序,去优先选择靠前的节点执行。

而sequence则是可以理解成是一个流程,按照从左到右的顺序依次执行,这个过程是线性的,任何一个节点中断,都会导致后续的节点无法执行。

?如图所示,这是一个吃披萨的过程,下面有四个节点。

  1. gather ingredients,收集食材,倘若收集失败,则后面便无法制作披萨。
  2. make pizza,制作披萨,收集食材成功后,可以开始制作,当制作失败,无法烹饪。
  3. cook pizza,烹饪披萨,制作披萨成功后,可以开始烹饪,当烹饪失败,无法进食。
  4. eat pizza,吃披萨,披萨烹饪完成后,便可以吃了,这也是这个流程最后一步,完成之后整个sequence节点才会返回true。

?那最后用一个图来回顾一下这两个节点用途吧。

?这是一个饥饿自动进食AI,可以看出来,因为上面吃多了披萨的原因,所以AI跟我反应他更想吃汉堡。于是我们把eat burger放在eat pizza前面,这样当他通过饥饿判定、拥有食物判定后,他会优先吃汉堡。

?那今天就到这里了,男人至死是少年,勇敢牛牛,不怕困难,加油,打工人!

参考资料:

https://www.bilibili.com/video/BV1pK411j79c?p=10&spm_id_from=pageDriver

https://www.bilibili.com/video/BV1jJ411d7mp?p=1

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:43:50  更:2021-09-02 11:44:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/21 23:41:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码