一个简易的行为树,虽然它简单,但是你可以用它来实现复杂的AI行为。
1.通过继承自Node,你可以在其中编写你想实现的一个行为。 2.通过继承自Selector,你可以编写你的一个判断逻辑,以运行你想要的子Node。 3.这颗树每层都为Node/Selector交错,Selector可以连接Node/UndertakeNode,建议使用继承自UndertakeNode的空Node来连接Selector。 4.LXF_MainEntrance是树的主入口,你可以继承它并为它编写逻辑。 5.通过继承自BaseTree,重写SetUpTree方法,初始化这棵树,如下图:
学习交流,QQ:2294421852
2024.3.26更新: 通过继承自LXF_Node,你可以在其中编写你想实现的一个行为,除此之外,你可以在执行这个行为和退出这个行为时执行一次你想要的设置: 你也可以通过GetMainEntrance和GetAimSelector来找到主节点或Selector节点。
通过继承自LXF_Selector,你可以编写你的一个判断逻辑,以运行你想要的子Node,行为树会自动化检测当前状态条件,你只需关心Selector下的子Node即可,而无需手动跳转。 同样的,LXF_Selector也添加了类似的初始化操作:
通过继承自LXF_MainEntrance编写你的主节点,这个节点意在链接你的其它节点,同时你可以通过它的TryGetAnyNode方法来获得行为树的任意子节点。 初始化这棵树需要添加这颗树本身,以建立与实际物体的联系,通常在SetUpTree(LXF_Tree中的方法)中传入this即可:
LXF_UndertakeNode是一个特殊的LXF_Node,它只做一件事,如图: 我已经提供好了9个内置的LXF_UndertakeNode,可以直接使用。
通过继承自LXF_Tree来编写你独一无二的行为树,而你只需要做一件事,就是重写SetUpTree方法! 这可能会有些复杂,但是你只需要做一次,如下图是我基于这颗行为树编写的一个守卫者的ai: 通常在SetUpTree之前利用树状图会使思路明了,以下是守卫者ai的行为树状图:
好了,今天的介绍就到这里。 本人QQ:2294421852 欢迎交流学习。