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

Composites
这里的"组合" 全名应该被成为“组合节点控制(管理)类目”,顾名思义在此条目下若干个选项都被称之为“控制类节点”,用以从最高的纬度去规范行为树的流程。具体细分为如下几种
Parallel 并行节点 此节点下属所有节点将一起进行,其中某一个执行返回false 则Parallel节点返回false
Parallel Selector 并行选择节点 此节点下属所有节点只要有一个返回success,则Parallel Selector节点返回success
注意: 以上二节点都是并行的,也就是说同时执行所有下属节点
Priority Selector 优选选择节点 此节点下属所有节点依次执行直到返回success
Random Selector 随机选择节点 此节点下属所有节点随机执行直到其中某一个返回success
Ramdom Sequence 随机选择列队节点 此节点下属所有节点随机执行直到其中一个返回false
Selector 选择节点 此节点下属所有节点依次执行直到返回true
Selector Evaluator 计算选择节点(姑且这样叫把,这个名词翻译的优点拗口) 此节点下属所有节点依次执行直到返回success,有一种情况使其返回running状态并中断,就是有节点被打勾了
Sequence 顺序节点 此节点下属所有节点依次执行直到返回false

Decorators
装饰节点应为Composites的分支节点,而装饰节点一般用来修饰判断,比如这个修饰可以是 “直到...成功”,“直到...失败”

Conditional Evaluator 条件计算节点 此节点下属节点执行直到返回success,有一种情况使其返回running状态并中断,就是有节点被打勾了

Interrupt 中断(开关)节点 此节点第一次执行为true第二次为false
Inverter 逆变节点 此节点的子节点如返回success他可将结果改为false反之也可
Repeater 重复节点 此节点可设置该节点下子节点重复执行的次数
Return Failure / Return Success 我就不解释了
Task Guard Task意为任务Guard意为守卫,那么这个节点是告诉我们可以用他来限定该节点的子节点不能同时被两项或以上的任务访问,换而言之该节点可以设置它的子节点能同时被几个任务(其余的节点)访问,类似于多线程访问统一资源我们所使用的Lock。
Until Fuilure / Until Success 直到...返回false/知道...返回Success 这两项我想也没有必要说明了,但看字面上的意思足够说明一切了。
Actions
动作或行为,如“攻击” “追逐”
Action有三大类,第一类为基础的API,第二类为基本的Monobehavior操作 如Animator,Animation,Behavior 等等,第三类为辅助API 都是使用反射处理,当然这个大类隐含着性能的损耗要谨慎使用
此处仅选必要的API解释,其余的相信你可以看懂
Behavior Tree Reference 此节点允许此节点的脚本中重写GetExternalBehaviors方法,也就是你可以在运行时指定一个行为树在当前节点下运行!(动态指定行为树)
Preform Interuption 此节点允许用户中断在节点列表中添加的任务(可以有很多任务)
Restart Behavior Tree 重启行为树
Stop Behavior Tree 终止行为树
另外 Action 一般我们程序需要扩展给策划配置 后文将提到如何自行扩展Action。
Conditionals
用于条件对比,例如 “是否为空” “是否是处于某状态” “是否接收到消息” “是否等于某数值”

作为行为树组建中最容易理解的Conditionals,在其基本API中大多以 "Is has XXX" 开头,顾名思义即可
如何扩展(程序)
创建一个自定义行为(Action)或是节点

相关文档
http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=5
使用运行时(Runtime)设置的数值
在编辑器中设置的数值有两种一种是在使用功能性节点的时候节点中需要预设的数值,另一种是全局可访问到的数值
添加wait节点的暂停时间
添加全局可访问的数值
非运行时可以使用刚才设置的float数值
当然也可使用全局数值
说完了使用编辑器访问数值现在该使用运行时动态获取这些数值了,代码很简单
相关文档
http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=54
基于行为树的AI 与 Behavior Designer插件的更多相关文章
- 【转】利用Behavior Designer制作敌人AI
http://www.unity.5helpyou.com/3112.html 本篇unity3d教程,我们来学习下利用Behavior Designer行为树插件来制作敌人AI,下面开始! Beha ...
- 做游戏长知识------基于行为树与状态机的游戏AI(一)
孙广东 2014.6.30 AI. 我们的第一印象可能是机器人,如今主要说在游戏中的应用. 现代的计算机游戏中已经大量融入了AI元素,平时我们进行游戏时产生的交互都是由AI来完毕的.比方在RPG游戏中 ...
- Unity教程之-基于行为树与状态机的游戏AI
AI.我们的第一印象可能是机器人,现在主要说在游戏中的应用.关于AI的相关文章我们在前面也提到过,详细请戳这现代的计算机游戏中已经大量融入了AI元素,平时我们进行游戏时产生的交互都是由AI来完成的.比 ...
- Unity火爆插件Behavior Designer行为树插件学习
如果要让游戏里的角色或者NPC能执行预设的AI逻辑,最简单的用IF..ELSE...神器既可以实现, 但是再复杂的一般用经典的状态机来切换状态,但是写起来比较麻烦.相对的,行为树(Behavior T ...
- unity行为树制作AI简单例子(1)
用行为树来制作AI是非常方便的,今天就给大家简单介绍一下行为树的强大之处. 所用插件 Behavior Designer v1.421 最开始 我使用过Rain插件,不过用过Behavior Desi ...
- Behavior Designer中的内置消息机制
最近在用Behavior Designer,其中需要用到消息机制,看了一下其中自带了这套东西 注册 Owner.RegisterEvent<string>("Message&qu ...
- 基于trie树做一个ac自动机
基于trie树做一个ac自动机 #!/usr/bin/python # -*- coding: utf-8 -*- class Node: def __init__(self): self.value ...
- 查找(四)-------基于B树的查找和所谓的B树
关于B树,不想写太多了,因为花在基于树的查找上的时间已经特么有点多了,就简单写写算了,如果以后有需要,或者有时间,可以再深入写写 首先说一下,为什么要有B树,以及B树是什么,很多数据结构和算法的书上来 ...
- 基于R树索引的点面关系判断以及效率优化统计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在之前的博客中,我分别介绍了基于网格的空间索引(http:// ...
随机推荐
- Python学习笔记(1)对象类型
强制转换字符串函数str 如果我们求2的一百万次方是多少那么我们可以 print(2**1000000) 如果我们要求2的一百万次方有多少位那么我们可以用str函数强制转换成字符串然后len函数计算 ...
- 本地搭建easy-mock
easy-mock要用nodejs启动,需要先安装nodejs ubuntu系统: apt install node centos系统: curl --silent --location https: ...
- 腾讯云:iptables基础
iptables 基础 iptables 基本命令 任务时间:5min ~ 10min iptables 可以简单理解为 Linux 系统内核级防火墙 netfilter 的用户态客户端. Linux ...
- 洛谷 3870 [TJOI2009]开关
[题解] 线段树基础题.对于每个修改操作把相应区间的sum改为区间长度-sum即可. #include<cstdio> #include<algorithm> #include ...
- Linux学习总结(18)——Linux使用init命令关机、重启、切换模式
reboot可能是每个用过Linux的人都知道的命令,但有一个命令"init"才是命令中的精英. 最近有个同事学习安装了CentOS,明明安装的是带桌面的系统,但是启动后进入了命令 ...
- 回文质数 USACO
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 15 ...
- [kuangbin带你飞]专题五 并查集 A - Wireless Network
An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up a wi ...
- MAPZONE GIS SDK接入Openlayers3之二——空间参考扩展
Openlayers默认了两种空间参考,一个是EPSG4326,一个是EPSG3857,其它的空间参考需要进行扩展才能使用.所以我们初始化时进行了如下操作: 1.将配置数据库中所有的空间参考读取出来, ...
- 基本的文件I/O
基本的文件 I/O 抽象基类 Stream 支持读取和写入字节. Stream 集成了异步支持. 其默认实现根据其相应的异步方法来定义同步读取和写入,反之亦然. 所有表示流的类都是从 Stream 类 ...
- bbed改动undo段状态(ORA-01578)
ZBDBA@orcl11g>select * from zbdba; select * from zbdba * ERROR at line 1: ORA-01578: ORACLE data ...