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 }); }
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); }