cocos creator中使用行为树(BehaviorTree) 四

cocos creator中使用行为树(BehaviorTree) 四

继续完善我们的monsterAI

现在我们已经实现的功能是 监视玩家的位置, 一旦有玩家靠近, monster就会发出警告并攻击, 现在我们在给monster加上巡逻的功能

打开cocos creator, 点击monster结点, 在属性检查器中找到Behavior脚本, 点击编辑, 这个时候在可视化插件可能中并没有我们已经画好的树, 不用担心, 点击下方的loadDataFromComp按钮, 把我们以前编辑好的行为树加载出来

因为现在有多个结点, 那么我们就要考虑结点的排序了

这一颗树的执行顺序是先找到root, 在按顺序执行他的子结点(子节点在上面的先执行, 当前树就是先执行Look结点)

现在我们要的功能是, monster在一定范围内巡逻, 同时监视一定范围的玩家, 如果发现了玩家, 停止巡逻, 接着进行攻击, 且当玩家离开监视范围, 停止攻击,  继续巡逻.

即, 巡逻和监视要并发, 而攻击则需要先触发监视, 画图

这个图花的挺艰辛的, 因为没找到select类型的结点, 找了几分钟, 还是读b3core.0.1.0module脚本是才找到这个priority结点

这个结点意思是优先, 即按顺序找到一个success结点就返回SUCCESS, 下面的结点就不执行了. 

所以这个图的意思就是, 先进入Look叶子结点, 判断敌人是否进入了监视返回, 没有就返回FAILED, 那么Sequence结点也返回FAILED, 因为返回的是失败, 那么继续执行Patrol结点, 开始巡逻.

当玩家进入监视范围时, Look结点返回SUCCESS, 那么可以执行Attack结点, Sequence返回的也是SUCCESS, 这个时候patrol结点就不会执行, 因为已经找到一个SUCCESS结点了,

花完之后, 点击Patrol结点, 我们给他加上一个属性areaSize 值为200

 

还有一个点, 当我们画完图时, 点击saveAsBehaviorTree按钮时

会重新生成BehaviorTree脚本, 所以我们的dt要重新加上(蛋疼), 等我之后想一个办法改一下

加上Patrol结点后, 我们要新建一个脚本, 名字是Patrol, 加上这5个默认的方法


const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {


    speed = 100;
    moveSize = 0;
    // LIFE-CYCLE CALLBACKS:

    // onLoad () {}

    start () {

    }

    enter (tick,b3,treeNode){
        
    }

    open (tick,b3,treeNode){
        
    }
    /**
     * 
     * @param tick 
     * @param b3 
     * @param treeNode 
     */
    tick (tick,b3,treeNode){
        let areaSize = treeNode.parameter.areaSize;
        let dt = tick.dt;
        this.node.x += dt * this.speed;
        this.moveSize += Math.abs(dt * this.speed)
        if(this.moveSize >= areaSize) {
            this.moveSize = 0;
            this.speed = -this.speed;
        }
        return b3.SUCCESS;
        
    }

    close (tick,b3,treeNode){
        
    }

    exit (tick,b3,treeNode){
        
    }

    // update (dt) {}
}

然后把这个脚本挂在monster结点上, 运行一下看看, (因为代码都很简单, 就不讲了)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值