Behavior Designer-行为树和有限状态机

来源:互联网 发布:大一c语言编程四则运算 编辑:程序博客网 时间:2024/06/01 19:48
行为树和有限状态机(例如PlayMaker)分别在什么情况下来使用呢?在很牛逼的情况下,行为树用在制作AI上,有限状态机用在一些普通的可视项目中。当然你也可以反过来用,这东西看心情。有些人说有限状态机的年代要终结了,但是我们还是要低调。只能说在做AI上行为树比状态机更好些。
优势如下:更加的灵活,更强力,易于修改。
让我们看下第一个优势:灵活。用状态机你怎么一次跑两个不同的状态。唯一的办法是做两个分离的状态机。在行为树下就简单了,你就加个平行任务就好了,所有的子任务会同时运行。在Behavior Designer中这些子任务可以是PlayMaker,多个PlayerMaker会并行运行。
灵活性的另一个体现就是任务的境界任务(guard task)。当你有两个任务都是播放音效的例子。这两个任务在不同的分支树结构下所以他们相互之间不知道对方在干什么然后就会发生同时播放音效的情况。让然这样的话就听起来不是这么美了,所以我们要杜绝这种情况。怎么办呢你可以增加一个semaphore task(信号任务)(在BehaviorDesignerz中被称为任务的警戒)它会保证在同一时间只有一个音效播放,当这个播放完下一个在播放。
另一个行为树的优点就是强大。当然了这并不是说状态机不强大(咳咳),所谓术业有专攻它们各有可取之处。在我们的可视化行为树里你能比状态机更简单的创建AI。创建一个可以适用于各种状况的AI,状态机需要非常多的状态和串口,相比而言行为树就可以很随意的就能实现。你会发现为了实现相同的效果,你的状态机能被你连成意大利面(嘲讽)。
最后一个优点是行为树可以很便捷的去做修改。行为树流行的一个原因就是它可以很方便的在视图编辑器里创建。如果你在状态机中改变状态执行的命令你要在各个状态中修改串口。但是在行为树中你需要做的就是拖动任务。你不需要担心那些串口。你可以很简单的通过改变状态或者增加一个父任务来分支行为树从而实现各种需求。
总之行为树和状态机并不是相互独立的。行为树也能加入状态机的功能,从而让它变得更强大。
0 0
原创粉丝点击