按照我的理解,如果要实现下图行为树Sequence.png的效果,StateTree应该被配置成这样StateTreeSequence.png。这样有个致命问题,Sequence父节点的SelectionBehavior如果设置成EStateTreeStateSelectionBehavior::TrySelectChildrenInOrder,这意味着如果State A的Check Condition没通过的话,会往下选择State B,这样就和行为树Sequence的行为不一致了。我们目前的想法是加一个EStateTreeStateSelectionBehavior::TrySelectFirstChild,永远只选择第一个子节点。官方有推荐的做法吗?另外EStateTreeStateType::Group是用来干什么的?
您好,根据您说的这种情况,父节点不要用TrySelectChildrenInOrder改成Try Follow Transitions, Transition到第一个子节点,如果第一个子节点成功就到下一个子状态,失败就父节点,看看是否满足你们的需求,如果还是不能满足那只能加一个SelectionBehavior选项了,虽然有点无奈
这个方法我也试过了,但是TryFollowTransitions只能识别OnTick、OnEvent触发的事件。如果用OnTick的话,这个Transition会每帧都执行,因为它在父State上,所以只要子State在跑,它就每帧都强制跳转。如果是OnEvent的话,又缺少一个进入State的事件。
看上去除了加一条枚举也没有什么好的方式来达到你们的要求,StateTree节点和sequence的逻辑确实有点不太一样
好的,那我先自己加了,感谢。我觉得引擎加一个也挺好的,尤其是对于从行为树迁移过来的用户。
好的~