Behavior Designer行为树之开发案例

发表于2018-03-22
评论0 4.1k浏览
关于行为树的基本使用方法网上有很多这方面的资料,本篇文章就不给大家多做阐述了,这里就用一个具体的开发案例给大家介绍Behavior Designer行为树。

案例介绍:在场景中存在一个来回巡逻的敌人,主角从起点走到终点的过程中倘若在视野内发现了敌人就跟随敌人行走。
游戏场景如下图

需要烘焙下平面,因为敌人与主角是通过烘焙导航的平面来寻路的,并且在敌人与主角添加寻路组件

敌人的行为树如下图:

敌人AI简单,在这里只设置一个巡逻节点
主角的行为树如下图

这时需要设置一个变量,将CanSeeObject节点中看到的游戏对象传给Seek组件,使其跟随传入的游戏对象。
设置步骤如下图:

定义一个Transform变量

将“变量值”----敌人位置拖动到如上图指定位置

选中CanSeeObject在Inspector视图中有一个Object In Sight属性
该属性将把在任务视野内看到的游戏对象的数据传入进去(一般我们使用变量是将变量的值传入任务中)
点中如图圈画的小圆点,选择刚刚设置的TargetPos变量,结果如下图:

选中Seek节点,点击小圈点,选择TargetPos,此时的TargetPos值为CanSeeObject任务传入的值
此时当主角在视野内发现了敌人就会跟随敌人

接下来再介绍一个非常重要的点
抛出问题:当主角在执行Seek任务时,倘若发现了敌人,但是主角并未跟随敌人

解决该问题根源就在如上图,在Sequence节点中的About Type属性中有三中类型:
1. Self
改方法将不断执行Sequence里面的任务,当返回错误将中断该任务,此时将执行Sequence右边的Seek节点任务,即当敌人离开主角视线将继续往终点行走

2. Lower Priority
改方法也将不断执行Sequence里面的任务,当Sequence里面的的第一个任务返回正确值时将中断Sequence右边的Seek节点任务,进而执行Sequence里面的任务,即当主角在从起点到终点的过程中发现敌人将跟随敌人

3. Both
改方法也将不断执行Sequence里面的任务,它又<1>、<2>全部属性,即当主角在从起点到终点的过程中发现敌人将跟随敌人,当敌人离开主角视线将继续往终点行走

注:以上三中方法都将不断的运行监测Sequence里面的任务,一旦符合,将中断选中的任务。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: