Behavior Designer行为树之开发案例

上篇文章介绍了行为树的基本使用方法点击打开链接

在这里介绍一个使用行为树开发的小案例

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

游戏场景如下图

Behavior Designer行为树之开发案例_第1张图片

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


敌人的行为树如下图

Behavior Designer行为树之开发案例_第2张图片

敌人AI简单,在这里只设置一个巡逻节点


主角的行为树如下图

Behavior Designer行为树之开发案例_第3张图片

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

设置步骤如下图:

Behavior Designer行为树之开发案例_第4张图片

定义一个Transform变量

Behavior Designer行为树之开发案例_第5张图片

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

Behavior Designer行为树之开发案例_第6张图片

选中CanSeeObject在Inspector视图中有一个Object In Sight属性

该属性将把在任务视野内看到的游戏对象的数据传入进去(一般我们使用变量是将变量的值传入任务中)

点中如图圈画的小圆点,选择刚刚设置的TargetPos变量,结果如下图:

Behavior Designer行为树之开发案例_第7张图片

选中Seek节点,点击小圈点,选择TargetPos,此时的TargetPos值为CanSeeObject任务传入的值

Behavior Designer行为树之开发案例_第8张图片

此时当主角在视野内发现了敌人就会跟随敌人


接下来再介绍一个非常重要的点

抛出问题:当主角在执行Seek任务时,倘若发现了敌人,但是主角并未跟随敌人

Behavior Designer行为树之开发案例_第9张图片

解决该问题根源就在如上图,在Sequence节点中的About Type属性中有三中类型:

<1>Self

改方法将不断执行Sequence里面的任务,当返回错误将中断该任务,此时将执行Sequence右边的Seek节点任务,即当敌人离开主角视线将继续往终点行走

<2>Lower Priority

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

<3>Both

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



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


本人也在寻找一份游戏开发实习工作,如果大佬们需要开发人员,请把我带走

这是我的简历:resume.liujunliang.com.cn/resume.pdf

作品的话可以私聊我哦!


你可能感兴趣的:(移动游戏开发,Unity游戏开发)