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