示例#1
0
    // Start is called before the first frame update
    void Start()
    {
        Sequence       root      = new Sequence(bb);
        Selector       targetSel = new Selector(bb);
        Help           help      = new Help(bb);
        ViewMark       mark      = new ViewMark(bb);
        NoDanger       noDanger  = new NoDanger(bb);
        Sequence       actionSeq = new Sequence(bb);
        Selector       ramSel    = new Selector(bb);
        Sequence       ramSeq    = new Sequence(bb);
        LineOfSight    los       = new LineOfSight(bb);
        Boost          boost     = new Boost(bb);
        NormalizeBoost norm      = new NormalizeBoost(bb);
        Chase          chase     = new Chase(bb);

        ramSeq.AddTask(los);
        ramSeq.AddTask(boost);

        ramSel.AddTask(ramSeq);
        ramSel.AddTask(norm);

        actionSeq.AddTask(ramSel);
        actionSeq.AddTask(chase);

        targetSel.AddTask(help);
        targetSel.AddTask(mark);

        root.AddTask(targetSel);
        root.AddTask(noDanger);
        root.AddTask(actionSeq);

        this.bt = root;
    }
    public Sequence_FleeZombie()
    {
        Sequence flee = new Sequence();

        flee.AddTask(new Task_Flee());
        flee.AddTask(new Sequence_DefaultFire());
        flee.AddTask(new Task_MoveBack());

        children.Add(flee);
    }
示例#3
0
    public Sequence_EvadeFireballs()
    {
        Sequence evadeFireballs = new Sequence();

        evadeFireballs.AddTask(new Task_Flee());
        evadeFireballs.AddTask(new Task_CheckFireballStatus());
        evadeFireballs.AddTask(new Task_MoveBack());

        children.Add(evadeFireballs);
    }
示例#4
0
    void Start()
    {
        root = new BehaviorTree();

        sequence_1 = new Sequence();
        sequence_2 = new Sequence();
        selecter_1 = new Selecter();

        condition_Dead        = new Condition_Dead();
        condition_Fine        = new Condition_Find();
        condition_AttackRange = new Condition_AttackRange();
        condition_Arrive      = new Condition_Arrive();

        timeOut_RoamingDelay = new TimeDelay();

        roaming = new Action_Roaming();
        trace   = new Action_Trace();
        attack  = new Action_Attack();
        dead    = new Action_Dead();

        colliders = new Collider[5];

        //========== 공격 ===================
        condition_AttackRange.SetTask(attack);
        selecter_1.AddTask(condition_AttackRange);
        //===================================

        //========== 추적 ===================
        condition_Fine.SetTask(trace);
        selecter_1.AddTask(condition_Fine);
        //===================================

        //========== 로밍 ===================
        timeOut_RoamingDelay.SetTime(3.0f);
        sequence_2.AddTask(timeOut_RoamingDelay);
        sequence_2.AddTask(roaming);
        condition_Arrive.SetTask(sequence_2);
        selecter_1.AddTask(condition_Arrive);
        //==================================

        sequence_1.AddTask(selecter_1);
        condition_Dead.SetTask(dead);
        sequence_1.AddTask(condition_Dead);

        root.Init(sequence_1);

        enemyCharacter     = GetComponentInChildren <Animator>().gameObject;
        animatorController = GetComponentInChildren <Animator>();
        StartCoroutine(Update_Coroution());
    }
    // Start is called before the first frame update
    void Start()
    {
        Sequence        root         = new Sequence(bb);
        NoDanger        noDanger     = new NoDanger(bb);
        Selector        targetSel    = new Selector(bb);
        Help            help         = new Help(bb);
        ViewMark        mark         = new ViewMark(bb);
        Sequence        actionSeq    = new Sequence(bb);
        Selector        ramSel       = new Selector(bb);
        Sequence        ramSeq       = new Sequence(bb);
        LineOfSight     los          = new LineOfSight(bb);
        Boost           boost        = new Boost(bb);
        NormalizeBoost  norm         = new NormalizeBoost(bb);
        Selector        shootOrChase = new Selector(bb);
        Sequence        shootSeq     = new Sequence(bb);
        WithinFortyDist wtd          = new WithinFortyDist(bb);
        KinematicAim    aim          = new KinematicAim(bb);
        Fire            fire         = new Fire(bb);
        Chase           chase        = new Chase(bb);


        shootSeq.AddTask(wtd);
        shootSeq.AddTask(aim);
        shootSeq.AddTask(fire);

        shootOrChase.AddTask(shootSeq);
        shootOrChase.AddTask(chase);

        ramSeq.AddTask(los);
        ramSeq.AddTask(boost);

        ramSel.AddTask(ramSeq);
        ramSel.AddTask(norm);

        actionSeq.AddTask(ramSel);
        actionSeq.AddTask(shootOrChase);

        targetSel.AddTask(help);
        targetSel.AddTask(mark);

        root.AddTask(noDanger);
        root.AddTask(targetSel);
        root.AddTask(actionSeq);

        this.bt = root;
    }
    // Start is called before the first frame update
    void Start()
    {
        Sequence        root      = new Sequence(bb);
        Selector        targetSel = new Selector(bb);
        Help            help      = new Help(bb);
        AllMark         mark      = new AllMark(bb);
        Sequence        shootSeq  = new Sequence(bb);
        KinematicAim    aim       = new KinematicAim(bb);
        WithinFortyDist wtd       = new WithinFortyDist(bb);
        Fire            fire      = new Fire(bb);

        shootSeq.AddTask(aim);
        shootSeq.AddTask(wtd);
        shootSeq.AddTask(fire);

        targetSel.AddTask(help);
        targetSel.AddTask(mark);

        root.AddTask(targetSel);
        root.AddTask(shootSeq);

        this.bt = root;
    }
示例#7
0
 private void Start()
 {
     mainSequence.AddTask(_moveAction, _getNextPathPointAction);
 }
示例#8
0
    // Use this for initialization
    void Start()
    {
        graph = GameObject.FindObjectsOfType <PathNode> ();

        for (int i = 0; i < 4; i++)
        {
            RunAllTask rootTask = new RunAllTask();

            /******* Attack ******/
            Sequence attackSequence = new Sequence();

            AquireTargetPriority aquireTargetNode = new AquireTargetPriority();
            //PredictAim predictAimNode = new PredictAim();
            ChooseWeapon chooseWeapon = new ChooseWeapon();
            AttackTarget attackNode   = new AttackTarget();

            attackSequence.AddTask(aquireTargetNode);
            //attackSequence.AddTask(predictAimNode);
            attackSequence.AddTask(chooseWeapon);
            attackSequence.AddTask(attackNode);

            /****** Movement *******/
            Selector movementSelector = new Selector();

            /****** Flee *******/
            Sequence fleeSequence = new Sequence();

            FindFleeDirection findFleeNode = new FindFleeDirection();
            Flee fleeNode = new Flee();

            fleeSequence.AddTask(findFleeNode);
            fleeSequence.AddTask(fleeNode);

            /****** Pickups ******/
            Selector       pickupSelector     = new Selector();
            MoveToItem     moveToItemNode     = new MoveToItem();
            PickupItem     pickupItemNode     = new PickupItem();
            Sequence       pickupSequence     = new Sequence();
            Selector       choosePickup       = new Selector();
            NeedAmmo       needAmmoNode       = new NeedAmmo();
            NeedHealth     needHealthNode     = new NeedHealth();
            FindPathToItem findPathToItemNode = new FindPathToItem();

            choosePickup.AddTask(needHealthNode);
            choosePickup.AddTask(needAmmoNode);

            pickupSequence.AddTask(choosePickup);
            pickupSequence.AddTask(findPathToItemNode);

            pickupSelector.AddTask(moveToItemNode);
            pickupSelector.AddTask(pickupItemNode);
            pickupSelector.AddTask(pickupSequence);

            movementSelector.AddTask(pickupSelector);
            movementSelector.AddTask(fleeSequence);



            // Add sequences to root
            rootTask.AddTask(attackSequence);
            rootTask.AddTask(movementSelector);
            //rootTask.AddTask(pickupSelector);

            if (i == 0)
            {
                Blackboard bd = new Blackboard(Francis, graph);
                bd.fleeDistance = 10.0f;
                FrancisBT       = new BehaviorTree(rootTask, bd);
            }
            else if (i == 1)
            {
                Blackboard bd = new Blackboard(Zoey, graph);
                bd.fleeDistance = 10.0f;
                ZoeyBT          = new BehaviorTree(rootTask, bd);
            }
            else if (i == 2)
            {
                Blackboard bd = new Blackboard(Bill, graph);
                bd.fleeDistance = 10.0f;
                BillBT          = new BehaviorTree(rootTask, bd);
            }
            else
            {
                Blackboard bd = new Blackboard(Louis, graph);
                bd.fleeDistance = 10.0f;
                LouisBT         = new BehaviorTree(rootTask, bd);
            }
        }
    }
示例#9
0
 private void Start()
 {
     mainSequence.AddTask(_waintingCheck, _safeDistanceCheck, _moveAction, _getNextPathPointAction);
 }