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 });
    }
Esempio n. 2
0
        public BTRandomSelector RandomSelector(params BTNode[] cs)
        {
            BTRandomSelector node = new BTRandomSelector(cs);

            node.bt = this;
            return(node);
        }