游戏AI:行为树

只愿长相守 提交于 2019-11-27 07:18:18

Behavior Tree

行为树通过子Task的返回值决定整棵树的走向

Task

行为树上的每个节点都称为一个Task, 每个Task存在三种状态, success, failure, running。
其中running是临时状态,仅叶子节点才能返回running状态,running结束后也要返回success或者failure。

Task的种类:

  • Composite
  • Behaivor(Action, Conditional)
  • Decorator

Composite


 

组合节点,可以组合其他任意的节点,从而构成一个数,根节点一般为组合节点

  • Sequence
  • Selector
  • Parallel(这个没有实现)
  • Random

Sequence

从左到右遍历Sequence的子Task。

  • 遇到failure则停止继续遍历,则Sequence直接返回failure
  • 遇到success则继续遍历,若Sequence的全部子Task都返回success,则Sequence返回success
  • 遇到running则停止继续遍历,并则等待running的返回值(failure或者success)

Selector

  • 遇到failure继续遍历,若Selector中子Task全返回failure,则Selector返回failure
  • 遇到success则停止遍历,并返回success,
  • 遇到running则停止继续遍历,并等待running的返回值(failure或者success)

Priority Selector

  • 类似于Selector,但是并不是顺序遍历,而是根据优先级(Priority)的顺序进行遍历
  • 优先级高的优先运行
  • Task的默认优先级都是0

Random Selector

  • 类似于Selector,但是并不是顺序遍历,而是随机(Random)的顺序遍历

Random Sequence

  • 类似于Sequence,但并不是顺序遍历,而是随机(Random)的顺序遍历

Decorator


 

修饰节点,可以包含一个Action,对其进行修饰

  • Failure 一直返回failure
  • Success 一直返回success
  • Inverter 对Action返回结果取反
  • Repeater 一直重复Action指定的次数
  • UntilFailure 一直重复Action,直到Action返回failure
  • UntilSuccess 一直重复Action,直到Action返回success

Contional


 

条件节点,用于描述条件

  • RandomProbability 随机概率,可以指定概率返回成功

Action


 

具体的行为执行节点

  • Event 发送指定的事件,并返回success
  • Invoke 调用指定方法,并返回success
  • Restart 重启行为树,并返回success
  • Wait 等待指定时间,在这个时间内一直返回running,时间到了后返回success
  • Log 打印日志,并返回success
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!