zoukankan      html  css  js  c++  java
  • Unity火爆插件Behavior Designer行为树插件学习

        如果要让游戏里的角色或者NPC能执行预设的AI逻辑,最简单的用IF..ELSE...神器既可以实现,

    但是再复杂的一般用经典的状态机来切换状态,但是写起来比较麻烦。相对的,行为树(Behavior Tree)理解和编辑起来就非常简单了。

    行为树,其实也是一种有限状态机,只不过形式上分层呈树结构,人称分层有限状态机(HFSM)。

    行为树主要用四种节点来描述行为逻辑

    --顺序节点(Sequence):组合节点,顺序执行子节点,只要碰到一个子节点返回FALSE,则返回FALSE;否则返回TRUE。

    --选择节点(Selector):组合节点,顺序执行子节点,只要碰到一个子节点返回TRUE,则返回TRUE;否则返回FALSE。

    --条件节点(Condition):叶节点,执行条件判断,返回判断结果。

    --执行节点(Action):叶节点,执行设定的动作,一般返回TRUE。

    比如:我们要表达一个最简单的NPC AI :

    如果碰到主角,打招呼;否则,睡觉。

    行为树的结构如下(其中黄色的是装饰节点,这里当做CD定时器来处理,在CD时间内这个节点一直返回FALSE,否则返回TRUE):

     设计好这个图,实现时将其转化为xml或者lua table或者json或者其他层次化的表示供程序读入,并构建好树对象,整个执行流程伪代码可能是这样的:

    function gameBrain.init()
        bt = btreee:new()
        bt.load("test.xml")
    end
    
    function gameBrain.update()
         bt.execute()
    end
    
    function main_cycle()
    --...
    brain.update()
    --...
    end
    

     

    有了这样一颗行为树,如果我们改变Condition的条件及两个不同的Action的具体操作,就可以实现各种各样的IF...ELSE...的AI逻辑;你可能说这简直就是简单问题复杂化;对于上边的这个逻辑的确是这样。但是行为树的优势在于其可以用层次化的方式表述AI,甚至可以用很简单的图形化的方式来编辑AI,而不需要改动AI框架代码。实施的时候,可以策划设计好行为树结构,程序填写Condition和Action即可;甚至可以做到代码完全不动,程序预先写好各种不同的Condition和Action供策划选用即可。

    -------------------------------

    在Unity中我们如何实现和应用行为树呢?

    以下为大家介绍[可视化插件] Behavior Designer 1.6.1 - 行为模式设计专用插件

      Behavior Designer提供了一个功能强大的API,使您可以轻松创建新任务。它还提供了一个直观的可视化编辑器,包含数百个任务和PlayMaker / uScript集成,可以创建复杂的AI而无需编写任何代码!


    行为设计师从一开始就设计得尽可能高效。因此,它在包括移动设备在内的所有平台上运行良好。它适用于Unity。

    特征:
    - 直观的可视化编辑器
    - 功能强大的API
    - 可视运行时调试器
    - 在任务之间进行通信的变量
    - 有条件的中止
    - 将现有代码与反射任务一起使用
    - 数以百计的任务
    - 没有额外的资产文件或编译步骤
    - 二进制或JSON序列化
    - 包括运行时源代码
    - 丰富的文档和教程视频
    - 在线提供示例项目
    - 和更多

    点击下载 提取码:2ave

    需要继续进行行为树插件Behavior Designer的学习,可观看下面的视频教程讲解

     

    目录

     

     

    共24讲,格式MP4,大小3GB,带素材

    扫码时备注或说明中留下邮箱

    付款后如未回复请至https://shop135452397.taobao.com/

    联系店主

  • 相关阅读:
    数据库小记:根据指定名称查询数据库表名及根据指定名称查询数据库所有表中的字段名称(支持mysql/postgre)
    Java实现 LeetCode第30场双周赛 (题号5177,5445,5446,5447)
    Java实现第十一届蓝桥杯C/C++ 大学 B 组大赛软件类 省赛真题(希望能和各位大佬能一起讨论算法题:讨论群:99979568)
    Java实现第十一届蓝桥杯 省赛真题(希望能和各位大佬能一起讨论算法题:讨论群:99979568)
    Java引用类型之软引用(2)
    Java引用类型之软引用(1)
    Java引用类型
    对象的创建
    类的初始化
    初始化itable
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/11451151.html
Copyright © 2011-2022 走看看