void Start()
    {
        //INIT
        playerCtrl = player.gameObject.GetComponent <CharacterController>();

        //ACTIONS
        BTAction block        = new BTAction(Block);
        BTAction meleeAttack  = new BTAction(MeleeAttack);
        BTAction rangedAttack = new BTAction(RangedAttack);
        BTAction getCloser    = new BTAction(GetCloser);

        //CONDITIONS
        BTCondition playerAttacking = new BTCondition(PlayerAttacking);
        BTCondition playerMelee     = new BTCondition(PlayerMelee);
        BTCondition playerFar       = new BTCondition(PlayerFar);

        //TREE
        BTSequence       seqBlock           = new BTSequence(new IBTTask[] { playerAttacking, block });
        BTSequence       seqMelee           = new BTSequence(new IBTTask[] { playerMelee, meleeAttack });
        BTSequence       seqGetCloser       = new BTSequence(new IBTTask[] { playerFar, getCloser });
        BTDecorator      untilFailGetCloser = new BTDecoratorUntilFail(seqGetCloser);
        BTRandomSelector rselRanged         = new BTRandomSelector(new IBTTask[] { untilFailGetCloser, rangedAttack });
        BTSelector       selAttack          = new BTSelector(new IBTTask[] { seqMelee, rselRanged });

        root = new BTSelector(new IBTTask[] { seqBlock, selAttack });
    }
Ejemplo n.º 2
0
    private void Start()
    {
        var a    = true;  // swich false
        var b    = false; // switch true
        var root = new BTSelector("Root");

        {
            var selectA = new BTSequencer("A");
            {
                var isA = new BTCondition("Is A", () => a);
                selectA.AddState(isA);

                var console = new BTAction("Print A", () => Debug.Log("Is A"));
                selectA.AddState(console);
            }
            root.AddState(selectA);

            var selectB = new BTSequencer("B");
            {
                var isB = new BTCondition("Is B", () => b);
                selectB.AddState(isB);

                var console = new BTAction("Print B", () => Debug.Log("Is B"));
                selectB.AddState(console);
            }
            root.AddState(selectB);
        }

        BehTree.AddState(root);
    }