行为树(BehaviorDesigner)插件(2)--行为树节点

最简单的行为树是任务的集合,这些任务我们可以把它理解为行为树中的一个一个的节点。
有四种不同类型的任务:Action(动作任务)、Conditional(条件任务)、Composite(复合任务)和 Decorator(装饰任务)。
一、Action(动作任务):它们以某种方式改变了游戏的状态,比如主角的某个动作,可以作为主角行为树上一个动作任务。

二、Conditional(条件任务):条件任务测试游戏的某些属性。例如(下图),在人工智能代理上面的行为树中有两个条件任务和两个动作任务。前两个有条件的任务检查是否有敌人在特工的视线范围内,然后确保特工足够的子弹发射他的武器。如果这两个条件都为真,则两个操作任务将运行。其中一个动作任务发射武器,另一个任务扮演播放动画。当你形成不同的子树时,行为树的真正力量就会发挥作用。两个射击动作可以形成一个子树。如果其中一个先前的条件任务失败后,可以生成另一个子树来执行一组不同的动作任务,例如逃离敌人。可以将子树分组到相互超越,形成高层次的行为。


三、Composite(复合任务):是包含子任务列表的父任务。
常用的有三种:
(1)Sequence (顺序节点):  此节点下属所有节点从左到右依次执行,直到所有子节点都返回true则返回true,否则返回false。有点像 “and”。     
(2)Selector (选择节点):  节点下属所有节点从左到右依次执行,直到所有子节点都返回false则返回false,否则只要有一个节点返回true则返回true。有点像 “or”。 
(3)Parallel (并行节点) :  此节点下属所有节点将一起进行,其中某一个执行返回false 则Parallel节点返回false。
从上面的例子中,复合任务被标记为序列和并行。一个序列任务运行每个任务一次,直到所有任务都运行完毕。它首先运行条件任务,检查敌人是否在视线范围内。如果敌人在视线范围内,它就会
检查代理是否还有子弹的条件任务。如果代理有足够的子弹,那么并行任务将运行,射出武器并播放
拍摄动画。如果序列任务一次执行一个子任务,则并行任务将同时执行其所有子任务。

四、Decorator(装饰任务):这种节点的功能是用来包装另一个节点!(只能有一个子节点)。Decorators(修饰节点)将改变节点的行为!例如:修饰节点可以在运行时控制子节点直到返回某个特定状态(success 或者是 false)。后者是对子节点返回结果取反(即:success 返回 false,false,返回 success)。在上面的例子中,我们没有使用decorator任务,但是如果你想阻止任务过早运行(称为中断任务),你可能需要使用decorator任务。
例如,代理可以执行诸如收集资源之类的任务。它可能会有一个中断任务,如果敌人
在附近。decorator任务的另一个例子是重新运行它的子任务x次,或者decorator任务在子任务完成之前一直运行它。

说完了任务,那么还有一点就是是任务的返回状态。可能有的任务不止花费一帧去完成。
例如,大多数动画不会在一帧内开始和结束。此外,条件任务需要一种方法来告诉其父任务是否
条件为true,因此父任务可以决定是否继续运行其子任务。使用任务状态可以解决这两个问题。三个任务中的一个
不同的状态:运行、成功或失败。在第一个示例中,只要拍摄动画正在播放,拍摄动画任务的任务状态为“运行”。这个
判断敌人是否在视线范围内的有条件任务将在一帧内返回成功或失败。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值