Unity中的行为树插件:Behavior Designer

外国技术人员的插件:http://www.opsive.com/assets/BehaviorDesigner

目前公司内部比较推崇的行为树插件就是这个,虽然有其他几个同类的竞品。

说一句题外话,优秀的插件总是外国人开发的,并且可以将插件开发做成一个小工作室或者个人的主要收入来源,但没看到国人有类似的作品出现。

行为树的概念出现已经很多年了,总的来说,就是使用各种经典的控制节点+行为节点进行组合,从而实现复杂的AI。目前在游戏中一般复杂的AI都可以看到行为树的身影,简单的AI可以使用状态机来实现。

Behavior Designer插件里,主要有四种概念节点,都称之为Task。包括:

(1)
Composites  组合节点,包括经典的:Sequence,Selector,Parallel

(2)
Decorator 装饰节点,顾名思义,就是为仅有的一个子节点额外添加一些功能,比如让子task一直运行直到其返回某个运行状态值,或者将task的返回值取反等等

(3)
Actions     行为节点,行为节点是真正做事的节点,其为叶节点。Behavior Designer插件中自带了不少Action节点,如果不够用,也可以编写自己的Action。一般来说都要编写自己的Action,除非用户是一个不懂脚本的美术或者策划,只想简单地控制一些物件的属性。

(4)
Conditinals 条件节点 ,用于判断某条件是否成立。目前看来,是Behavior Designer为了贯彻职责单一的原则,将判断专门作为一个节点独立处理,比如判断某目标是否在视野内,其实在攻击的Action里面也可以写,但是这样Action就不单一了,不利于视野判断处理的复用。一般条件节点出现在Sequence控制节点中,其后紧跟条件成立后的Action节点。

Behavior Designer对于变量的共享做了如下处理:

在同一个Behavior Tree(一般一个GameObject有一个Behavior
Tree)的Task间共享的局部变量可以直接在编辑器的Variables添加;另外也支持在不同Behavior Tree之间共享的全局变量;还支持Task与非Task(游戏系统中的其他脚本)之间进行变量传递,通过下面代码进行:

	behaviorTree.GetVariableName("MyVariableName");
	behaviorTree.SetVariableName("MyVariableName", value);
    看了下Behavior Tree官网的视频,感觉还是挺清晰的,就是Sample代码需要一个码才能下载,木有码只能不了了之了,毕竟目前只是用非正式渠道的插件。
时间: 2024-10-13 16:25:10

Unity中的行为树插件:Behavior Designer的相关文章

[Unity插件]Behavior Designer:制作敌人AI

一个简单的敌人AI: 当处于监视范围内,跑向玩家:当处于攻击范围内,攻击玩家:否则呆在原地.用行为树表示就是: 其中当前行为树的变量与全局变量为: 效果图: 制作简单的AI确实不需要写代码,不过配置起来确实有点麻烦了.可以根据需求,编写自定义的节点来组成复杂的AI. 当游戏需要大量的AI时,Behavior Designer确实是一个不错的选择,因为自定义的节点可以不断被重用了.

[Unity插件]Behavior Designer:SharedVariable与GlobalVariable

设置SharedVariable与GlobalVariable: 上面的SharedV是SharedVariable,变量范围是当前行为树: 下面的GlobalV是GlobalVariable,变量范围是所有的行为树. SharedVariable与普通变量的区别: SharedVariable可以引用上面设置的变量,省去了拖拽的操作,如果同一个物体被多个节点引用,则可以将该物体设置为SharedVariable using UnityEngine; namespace BehaviorDesi

Unity中的行为树-追踪

在游戏中,我们为了使敌人更智能化或者"智商"更高点,我们引入了行为树概念,什么是行为树?简单的理解就是,在一方做出行为的时候另一方会相应的做出举动来响应对方的行为,这就好比是一棵树,树干动了以后,树枝和树叶都要相应的动.现在我们将其理论应用到我们的游戏中,用它来追踪玩家,首先我们要明确目标:下图所示: 大家看上图,带箭头的是目标点,二两个是根据目标点的移动采取相应的行为追踪.再给大家看几张图: 不同的移动位置,对方的船都做出相应的变化. 接下来我们用代码实现,首先我们要知道目标是否在我

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

优点: 0.行为逻辑和状态数据分离,任何节点都可以反复利用. 1.高度模块化状态,去掉状态中的跳转逻辑,使得状态变成一个"行为". 2."行为"和"行为"之间的跳转是通过父节点(Composite)的类型来决定的(例如sequence或者selector) .比如并行处理两个行为,在状态机里面无法同时处理两个状态. 3.通过增加控制节点的类型,可以达到复用行为的目的. Behavior trees are a combination of man

Behavior Designer 行为树入门

本篇教程将带领大家熟悉 行为树插件之Behavior Designer .本篇教程不会出现过多的代码,故也适合策划学习.你将学习到一种新的动画与AI的解决方案使即使用Behavior Designer来设计动画的播放逻辑与AI的行为逻辑, 如果你用过PlayerMaker那么再好不过了,你可以Behavior Designer当作是PlayerMaker的强化版但有不同于PlayerMaker.当然我不是在这里推崇这种插件,而是了解另一种设计思路.当然在现在国内对于Behavior Design

【U3D】初识Behavior Designer行为树(一)

本系列文章由@萌萌的一天出品,未经博主允许不得转载.   Behavior Designer行为树插件介绍        Behavior Designer是U3D AssetStore上很优秀的一款插架,它在基于Behaviour Tree相关原理的基础上拓展出了更加复杂的模块,并且运用了很强大的人工智能技术.第一个将Behaviour Tree概念应用到游戏的产品是Xbox上的<Halo 2>,之后更多的游戏开发者选择应用Behavior Tree而不是Hierarchical FSM来控

unity中使用FingerGestures插件3.0

FingerGestures是一个unity3D插件,用来处理用户动作,手势. 译自FingerGestures官方文档 目录 FingerGestures包结构 FingerGestures例子列表 设置场景 教程:识别一个轻敲手势 教程:手势识别器 教程:轻击手势识别器 教程:拖拽手势识别器 教程:滑动手势识别器 教程:长按手势识别器 教程:缩放手势识别器 教程:旋转手势识别器 教程:自定义手势识别器 教程:识别手势事件 建议:使用.net代理事件 fingerGestures包结构 路径,

主攻ASP.NET.4.5.1 MVC5.0之重生:在项目中使用zTree jQuery 树插件

效果图和json格式 Controllers代码 using HR.Models; using HR.Models.Repository; /************************************************************************************ * 命名空间:HR.Controllers * Controller: TreeController * 版本号: F 1.0.0.0 * 负责人: Markfan * 电子邮箱:[ema

Behavior Designer中的内置消息机制

最近在用Behavior Designer,其中需要用到消息机制,看了一下行为树其中自带了这套东西 注册 Owner.RegisterEvent<string>("Message", Message); 反注册 Owner.UnregisterEvent<string>("Message", Message); 发送消息 Owner.SendEvent("Message", "Finished B Action&