如果要让游戏里的角色或者NPC能执行预设的AI逻辑,最简单的用IF..ELSE...神器既可以实现,

但是再复杂的一般用经典的状态机来切换状态,但是写起来比较麻烦。相对的,行为树(Behavior Tree)理解和编辑起来就非常简单了。

行为树,其实也是一种有限状态机,只不过形式上分层呈树结构,人称分层有限状态机(HFSM)。

行为树主要用四种节点来描述行为逻辑

--顺序节点(Sequence):组合节点,顺序执行子节点,只要碰到一个子节点返回FALSE,则返回FALSE;否则返回TRUE。

--选择节点(Selector):组合节点,顺序执行子节点,只要碰到一个子节点返回TRUE,则返回TRUE;否则返回FALSE。

--条件节点(Condition):叶节点,执行条件判断,返回判断结果。

--执行节点(Action):叶节点,执行设定的动作,一般返回TRUE。

比如:我们要表达一个最简单的NPC AI :

如果碰到主角,打招呼;否则,睡觉。

行为树的结构如下(其中黄色的是装饰节点,这里当做CD定时器来处理,在CD时间内这个节点一直返回FALSE,否则返回TRUE):

设计好这个图,实现时将其转化为xml或者lua table或者json或者其他层次化的表示供程序读入,并构建好树对象,整个执行流程伪代码可能是这样的:

function gameBrain.init()
bt = btreee:new()
bt.load("test.xml")
end function gameBrain.update()
bt.execute()
end function main_cycle()
--...
brain.update()
--...
end

 

有了这样一颗行为树,如果我们改变Condition的条件及两个不同的Action的具体操作,就可以实现各种各样的IF...ELSE...的AI逻辑;你可能说这简直就是简单问题复杂化;对于上边的这个逻辑的确是这样。但是行为树的优势在于其可以用层次化的方式表述AI,甚至可以用很简单的图形化的方式来编辑AI,而不需要改动AI框架代码。实施的时候,可以策划设计好行为树结构,程序填写Condition和Action即可;甚至可以做到代码完全不动,程序预先写好各种不同的Condition和Action供策划选用即可。

-------------------------------

在Unity中我们如何实现和应用行为树呢?

以下为大家介绍[可视化插件] Behavior Designer 1.6.1 - 行为模式设计专用插件

Behavior Designer提供了一个功能强大的API,使您可以轻松创建新任务。它还提供了一个直观的可视化编辑器,包含数百个任务和PlayMaker / uScript集成,可以创建复杂的AI而无需编写任何代码!

行为设计师从一开始就设计得尽可能高效。因此,它在包括移动设备在内的所有平台上运行良好。它适用于Unity。

特征:
- 直观的可视化编辑器
- 功能强大的API
- 可视运行时调试器
- 在任务之间进行通信的变量
- 有条件的中止
- 将现有代码与反射任务一起使用
- 数以百计的任务
- 没有额外的资产文件或编译步骤
- 二进制或JSON序列化
- 包括运行时源代码
- 丰富的文档和教程视频
- 在线提供示例项目
- 和更多

点击下载 提取码:2ave

需要继续进行行为树插件Behavior Designer的学习,可观看下面的视频教程讲解

 

目录

共24讲,格式MP4,大小3GB,带素材

扫码时备注或说明中留下邮箱

付款后如未回复请至https://shop135452397.taobao.com/

联系店主

Unity火爆插件Behavior Designer行为树插件学习的更多相关文章

  1. 【转】利用Behavior Designer制作敌人AI

    http://www.unity.5helpyou.com/3112.html 本篇unity3d教程,我们来学习下利用Behavior Designer行为树插件来制作敌人AI,下面开始! Beha ...

  2. 【linux】驱动-9-设备树插件

    目录 前言 9. Linux设备树插件 9.1 格式 9.2 设备树插件的编译和加载 9.2.1 单独使用dtc工具编译 9.2.2 内核dtc工具编译设备树插件 9.2.3 加载设备树插件 9.2. ...

  3. 基于行为树的AI 与 Behavior Designer插件

    优点:    0.行为逻辑和状态数据分离,任何节点都可以反复利用.    1.高度模块化状态,去掉状态中的跳转逻辑,使得状态变成一个"行为".    2."行为" ...

  4. js组件在线编辑器插件、图表库插件、文件树插件

    在线编辑器插件: 一.kindeditor 二.UEditor 图表库插件: 一.echart 二.highchart 文件树插件: 一.zTree -- jQuery 树插件 http://www. ...

  5. Unity3D行为树插件Behave学习笔记

    Behave1.4行为树插件 下载地址:http://pan.baidu.com/s/1i4uuX0L 安装插件和使用 我们先来看看插件的安装和基本使用方法,新建一个Unity3D项目,这里我使用的是 ...

  6. 顶级jQuery树插件

    顶级jQuery树插件 顶级jQuery树插件 2013-03-05 17:20 139人阅读 评论(0) 收藏 举报 jsTree JsTree是一个基于jQuery的Tree控件.支持HTML.J ...

  7. easyui&8Jquery ztree树插件

    7Jquery easyui前台UI框架 开发包: 7.1Layout页面布局 将课后资料中后台系统前台页面素材导入项目中 1.导入Jquery,easyui相关js,css文件 <link r ...

  8. 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询条件的处理

    在我Boostrap框架中,很多地方需要使用bootstrapTable表格插件和jstree树形列表插件来共同构建一个比较常见的查询界面,bootstrapTable表格插件主要用来实现数据的分页和 ...

  9. 基于bootstrap的jQuery多级列表树插件 treeview

    http://www.cnblogs.com/mfc-itblog/p/5233453.html http://www.htmleaf.com/jQuery/Menu-Navigation/20150 ...

随机推荐

  1. MySQL Transaction--网络丢包导致长时间未提交事务

    TCP三次握手(Three-Way Handshake) 建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立. TCP三次握手:第一次握手:Client将标志位SYN置为1,随机产 ...

  2. 为群晖加把锁:使用ssh密钥保障数据安全

    对每一个使用群晖nas的人而言,能保证群晖里保存的数据不被未经授权的人访问下载甚至破坏可能是最重要的事情.但数据只要上网,就免不了担心密码被破解,群晖被侵入.现在网络上,要破解密码可能是最简单不过的事 ...

  3. PHP openssl DES加解密

    不说废话上代码 加密 $str_padded = 'android'; //要加密的字符串 $iv = "12345678"; 偏移值 cbc必填 "\x01\x02\x ...

  4. MyEclipse激活代码

    package TestCase; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  5. 谈谈javascript中的prototype与继承

    谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性 ...

  6. Selenium常用API的使用java语言之20-获取窗口截图

    自动化用例是由程序去执行,因此有时候打印的错误信息并不十分明确.如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因. WebDriver提供了截图函数getScr ...

  7. python - djanog (静态文件)

    # 在 setting 文件中的 static ,通过这个方法(别名) 可以拼接到其它文件夹中的文件 # 第一步: 导入 # {% load static %} # 第二步: 查找 static (别 ...

  8. js正则验证input输入框有空格时提示直接去除空格

    <input type="text" id="test"/> <input type="button" value=&qu ...

  9. 一文读懂后缀自动机 Suffix_Automata

    原论文(俄文)地址:suffix_automata 原翻译(中文)地址:后缀自动机详解(DZYO的博客) Upd:强推浅显易懂(?)的SAM讲解 后缀自动机 后缀自动机(单词的有向无环图)--是一种强 ...

  10. 使用对象,面向对象创建div的方式

    <script> // //对象div的创建 // var div = document.createElement("div"); // document.body. ...