コード例 #1
0
    public Sequence_SpendGold()
    {
        // Selector to Buy Ammo
        Selector chooseAmmoToBuy = new Selector();

        chooseAmmoToBuy.AddTask(new Task_BuyAssaultAmmo());
        chooseAmmoToBuy.AddTask(new Task_BuySniperAmmo());
        chooseAmmoToBuy.AddTask(new Task_BuyShotgunAmmo());

        children.Add(chooseAmmoToBuy);

        // selector to purchase ammo
        Selector purchaseSurvivors = new Selector();

        purchaseSurvivors.AddTask(new Task_BuySurvivors());
        purchaseSurvivors.AddTask(new Task_CannotPurchase());

        children.Add(purchaseSurvivors);

        Selector purchaseTowers = new Selector();

        purchaseTowers.AddTask(new Task_BuyTowers());
        purchaseTowers.AddTask(new Task_CannotPurchase());

        children.Add(purchaseTowers);
    }
コード例 #2
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;
    }
コード例 #3
0
    public Sequence_KillHellephant(Enemy e)
    {
        targetedHellephant = e;

        children.Add(new Task_SetTarget(targetedHellephant));
        children.Add(new Task_IsEnemyVisible());

        Task weaponSelector = new Selector();

        weaponSelector.AddTask(new Task_UseShotgun());
        weaponSelector.AddTask(new Task_UsePistol());

        children.Add(weaponSelector);

        children.Add(new Task_FireAtEnemy());
    }
コード例 #4
0
    // 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;
    }
コード例 #5
0
    public Sequence_KillSpecial(Enemy e)
    {
        specialTarget = e;


        children.Add(new Task_SetTarget(specialTarget));
        children.Add(new Task_IsEnemyVisible());

        Task weaponSelector = new Selector();

        weaponSelector.AddTask(new Task_UseAssault());
        weaponSelector.AddTask(new Task_UseSniper());
        weaponSelector.AddTask(new Task_UsePistol());

        children.Add(weaponSelector);

        children.Add(new Task_FireAtEnemy());
    }
コード例 #6
0
    public Sequence_DefaultFire()
    {
        Task enemySelector = new Selector();

        enemySelector.AddTask(new Task_FindClosestTarget());
        children.Add(new Task_UsePistol());
        children.Add(enemySelector);
        children.Add(new Task_IsEnemyVisible());
        children.Add(new Task_FireAtEnemy());
    }
コード例 #7
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);
        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;
    }
コード例 #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);
            }
        }
    }