Ejemplo n.º 1
0
    //builds the characters behaviour tree
    private void constructBehaviourTree()
    {
        //health node checks if health is below threshold
        HealthNode healthNode = new HealthNode(this, m_lowHealthThreshold);

        //inverted health checks if health is above threshhold
        Inverter invertHealth = new Inverter(healthNode);

        //Cover

        GetCoverNode getCoverNode = new GetCoverNode(target.transform, this);

        GoToCoverNode goToCoverNode = new GoToCoverNode(this, m_speed);

        HealNode Heal = new HealNode(20, this, m_healthRegenRate);

        Sequence CoverSequence = new Sequence(new List <BNode> {
            healthNode, getCoverNode, goToCoverNode, Heal
        });

        //chase
        Range = new RangeNode(m_detectionRange, target.transform, gameObject.transform, this);

        Chase = new ChaseNode(target.transform, this, m_speed);

        Sequence ChaseSequence = new Sequence(new List <BNode> {
            invertHealth, Range, Chase
        });

        //wander
        RangeNode wanderRange = new RangeNode(m_detectionRange, target.transform, gameObject.transform, this);

        Inverter invertWanderRange = new Inverter(wanderRange);

        WanderNode wander = new WanderNode(this, m_speed);

        Sequence WanderSequence = new Sequence(new List <BNode> {
            invertWanderRange, wander
        });

        //attack
        attackRange = new RangeNode(m_attackRange, target.transform, gameObject.transform, this);

        attack = new AttackNode(target.transform, this);

        Sequence AttackSequence = new Sequence(new List <BNode> {
            attackRange, attack
        });


        //root node
        topNode = new Selector(new List <BNode> {
            CoverSequence, AttackSequence, ChaseSequence, WanderSequence
        });
    }
    //builds the characters behaviour tree
    private void constructBehaviourTree()
    {
        ////Cover

        GetCoverNode getCoverNode = new GetCoverNode(m_target.transform, this);

        GoToCoverNode goToCoverNode = new GoToCoverNode(this, m_speed);

        HealNode Heal = new HealNode(20, this, m_healthRegenRate);

        Sequence CoverSequence = new Sequence(new List <BNode> {
            getCoverNode, goToCoverNode, Heal
        });

        coverTopNode = new Selector(new List <BNode> {
            CoverSequence
        });

        ////chase
        m_chase = new ChaseNode(m_target.transform, this, m_speed);

        Sequence ChaseSequence = new Sequence(new List <BNode> {
            m_chase
        });

        chaseTopNode = new Selector(new List <BNode> {
            ChaseSequence
        });

        ////wander
        WanderNode wander = new WanderNode(this, m_speed);

        Sequence WanderSequence = new Sequence(new List <BNode> {
            wander
        });

        WanderTopNode = new Selector(new List <BNode> {
            WanderSequence
        });

        ////attack
        m_attack = new AttackNode(m_target.transform, this);

        Sequence AttackSequence = new Sequence(new List <BNode> {
            m_attack
        });

        attackTopNode = new Selector(new List <BNode> {
            AttackSequence
        });
    }