Exemplo n.º 1
0
    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
        });
    }
Exemplo n.º 2
0
        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
            });
        }
Exemplo n.º 3
0
    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
        });
    }