• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱

behaviac.EBTStatus的使用方法

0 喜欢 0 不喜欢
95 浏览
关于behaviac.EBTStatus的使用方法有一点疑惑,举个坦克大战中的例子

坦克找到了一个要扭转的角度以后,调用moveDirection方法,该方法的返回类型为behaviac.EBTStatus

那么该怎么确保坦克角度到达正确的方向以后,再执行下面的逻辑呢
最新提问 7月 14, 2016 用户: qq_573d20a51aa28 (170 分)

1个回答

0 喜欢 0 不喜欢

首先参考一下动作节点文档:https://www.zhihu.com/question/29486474

文中指出:“每次执行动作节点后的状态(Success、Failure或Running)”,可以望文生义,知道返回这个三个状态的字面意思。如果这个动作一直在执行,就会返回running状态。下次行为树会直接进入该节点执行。直到返回success或者返回failure。

假设行为树如下:

image

假设1:

转向方法是一个缓慢的过程,每秒钟转动10度,那么 转向(90)需要9秒钟,如果此函数在执行的过程中,一直返回running,那么它下面的节点将不会被执行,因为要一直做目前返回running的节点。直到aimToAngle()返回成功,才会执行r下面的moveToDirection(LEFT)和fire()这个方法。如果返回的是failure,也不会执行下面的节点,因为是由Sequence节点的特性决定的,有一个子节点返回失败,那么这个节点就返回失败。

假设2:

如果转向是瞬间完成的,那么可能中间就不会返回running状态了。直接就会返回成功或者失败。

 

知乎上有些文章,可以方便你学习:

https://www.zhihu.com/question/29486474

jonygli的回答:https://www.zhihu.com/question/29486474/answer/70782045

这个是更基础的关于running状态的解释: https://www.zhihu.com/question/29486474/answer/66848920

最新回答 7月 14, 2016 用户: quinnpan (12,640 分)
修改于 7月 14, 2016 用户:quinnpan
...