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 }); }
public BTRandomSelector RandomSelector(params BTNode[] cs) { BTRandomSelector node = new BTRandomSelector(cs); node.bt = this; return(node); }