基于行为树的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:// ...
随机推荐
- 「 poj 2096 」 Collecting Bugs
先说一下题意 $s$ 个子系统还中有 $n$ 种 $\text{bug}$,每天可以随机选择一种 $\text{bug}$,问选出 $n$ 种 $\text{bug}$ 在 $s$ 种子系统中的期望天 ...
- <SpringMvc>入门六 异常处理
如果不做异常处理,那么一直将错误向上抛出,则会最后在页面上显示错误代码 服务启动后,访问test1方法,页面会报500 为了提示友好的错误页面,所以需要做异常处理 1.编写自定义异常类(做提示信息的) ...
- 39页第3题 求x的n次幂
/*计算x的n次幂*/ #include<stdio.h> main(void) { int i,n; double x,y; printf("Enter x:");/ ...
- Linux—Ubuntu14.0.5配置JAVA环境
1. 前往ORACLE官网下载最新版本的Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html,默认下载 ...
- np.tile(), np.repeat() 和 tf.tile()
以上三个函数,主要区别在于能够拓展维度上和重复方式: np.tile() 能够拓展维度,并且整体重复: a = np.array([0,1,2]) np.tile(a,(2,2)) # out # a ...
- Thunderbird and Gmail
https://support.mozilla.org/en-US/kb/thunderbird-and-gmail
- python正则表达式的好文章(转)
http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html https://blog.csdn.net/shw800/article/det ...
- Crackme3 破解教程
Crackme3 破解教程 1.先用PEiD对 Crackme3进行 壳测试 点击File右边的按钮,选中Crackme3 结果如下图所示: 即 无壳. 试运行软件 点击 Register now! ...
- idea 如何将本地代码上传到github
1. 首先切换到项目根目录下 执行 git init 2. 点击项目右键->Git->Repository->Remotes->编辑URL 到github代码地址.
- md5加密的工具类(from 韩顺平)
输入一个字符串,然后可以进行md5加密 import java.security.*; import java.security.spec.*; public class MyTools { publ ...