private void ConstructBehahaviourTree() { IsCoverAvailableNode isCoverAvaliableNode = new IsCoverAvailableNode(avaliableCovers, playerTransform, this); GoToCoverNode goToCoverNode = new GoToCoverNode(agent, this); HealthNode healthNode = new HealthNode(this, lowHealthThreshold); IsCoveredNode isCoveredNode = new IsCoveredNode(playerTransform, transform); ChaseNode chaseNode = new ChaseNode(playerTransform, agent, this); RangeNode chasingRangeNode = new RangeNode(chasingRange, playerTransform, transform); RangeNode shootingRangeNode = new RangeNode(shootingRange, playerTransform, transform); ShootNode shootNode = new ShootNode(agent, this, playerTransform); Sequence chaseSequence = new Sequence(new List <Node> { chasingRangeNode, chaseNode }); Sequence shootSequence = new Sequence(new List <Node> { shootingRangeNode, shootNode }); Sequence goToCoverSequence = new Sequence(new List <Node> { isCoverAvaliableNode, goToCoverNode }); Selector findCoverSelector = new Selector(new List <Node> { goToCoverSequence, chaseSequence }); Selector tryToTakeCoverSelector = new Selector(new List <Node> { isCoveredNode, findCoverSelector }); Sequence mainCoverSequence = new Sequence(new List <Node> { healthNode, tryToTakeCoverSelector }); topNode = new Selector(new List <Node> { mainCoverSequence, shootSequence, chaseSequence }); }
private void ConstructBehaviourTree() { // Nodes var wonderNode = new WonderNode(_navMeshAgent, gameObject); var coverAvailableNode = new IsCoverAvailableNode(availableCovers, player.transform, this); var goToCoverNode = new GoToCoverNode(this, _navMeshAgent); var healthNode = new HealthNode(GetComponent <EnemyController>(), GetComponent <EnemyController>().lowHealthThreshold); var isCoveredNode = new IsCoveredNode(player.transform, transform); var chaseNode = new ChaseNode(player.transform, _navMeshAgent); var wonderRangeNode = new NotInRangeNode(GetComponent <EnemyController>().chaseRange, player.transform, transform); var chasingRangeNode = new RangeNode(GetComponent <EnemyController>().chaseRange, player.transform, transform); var shootingRangeNode = new RangeNode(GetComponent <EnemyController>().shootRange, player.transform, transform); var shootNode = new ShootNode(_navMeshAgent, this); // Sequences var wonderSequence = new BTSequencer(new List <BTNode> { wonderRangeNode, wonderNode }); var chaseSequence = new BTSequencer(new List <BTNode> { chasingRangeNode, chaseNode }); var shootSequence = new BTSequencer(new List <BTNode> { shootingRangeNode, shootNode }); var goToCoverSequence = new BTSequencer(new List <BTNode> { coverAvailableNode, goToCoverNode }); var findCoverSelector = new BTSelector(new List <BTNode> { goToCoverSequence, chaseSequence }); var tryToTakeCoverSelector = new BTSelector(new List <BTNode> { isCoveredNode, findCoverSelector }); var mainCoverSequence = new BTSequencer(new List <BTNode> { healthNode, tryToTakeCoverSelector }); _rootNode = new BTSelector(new List <BTNode> { wonderSequence, mainCoverSequence, shootSequence, chaseSequence }); }
private void ConstructBehaviorTree() { //Custom Nodes IsCoverAvailableNode coverAvailableNode = new IsCoverAvailableNode(availableCovers, playerTransform, this); MoveToCoverNode moveToCoverNode = new MoveToCoverNode(agent, this); HealthNode healthNode = new HealthNode(this, lowHealthThreshold); IsCoveredNode isCoveredNode = new IsCoveredNode(playerTransform, transform); ChaseNode chaseNode = new ChaseNode(playerTransform, agent, this); RangeNode chaseRangeNode = new RangeNode(chaseRange, playerTransform, transform); //RangeNode shootRangeNode = new RangeNode(shootRange, playerTransform, transform); //ShootNode shootNode = new ShootNode(agent, this); //Sequence Nodes Sequence chaseSequence = new Sequence(new List <Node> { chaseRangeNode, chaseNode }); //Sequence shootSequence = new Sequence(new List<Node> { shootRangeNode, shootNode }); Sequence moveToCoverSequence = new Sequence(new List <Node> { coverAvailableNode, moveToCoverNode }); //Selector Nodes Selector findCoverSelector = new Selector(new List <Node> { moveToCoverSequence, chaseSequence }); Selector takeCoverSelector = new Selector(new List <Node> { isCoveredNode, findCoverSelector }); Sequence mainCoverSequence = new Sequence(new List <Node> { healthNode, takeCoverSelector }); topNode = new Selector(new List <Node> { mainCoverSequence, chaseSequence }); }