zoukankan      html  css  js  c++  java
  • 游戏AI:行为树

    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
  • 相关阅读:
    配置ASP.NET 2.0环境
    httpwatch
    自定义分页控件
    clear在CSS中的妙用
    Maximum length exceeded错误
    SQLServer数据表分区优化数据库
    游标的使用
    在Sql Server 使用系统存储过程sp_rename修改表名或列名
    SQL Server中如何备份到异机
    SQL Server 中 自定义函数 和 游标 应用的经典案例
  • 原文地址:https://www.cnblogs.com/luweimy/p/4394971.html
Copyright © 2011-2022 走看看