// Use this for initialization void Start() { eventManager = FindObjectOfType <EventManager>(); navAgent = GetComponent <NavMeshAgent>(); player = FindObjectOfType <Player>(); body = GetComponent <Rigidbody>(); triggerTag = "Player"; m_waypoints.TrimExcess(); Debug.Log("Start target tag: " + triggerTag); animator = GetComponent <Animator>(); // Detects if eye location is set if (!m_eyeLocation) { Debug.Log("Eye Location is not set"); } // Detects if waypoints are set if (m_waypoints.Count < 1) { Debug.Log("Waypoints are not set"); } //---------------------------------------------------- // The Attack Sequence // Set triggers to turn off List <string> offTriggers = new List <string>(); offTriggers.Add("Search"); offTriggers.Add("Chase"); // Set up the attack behaviour PlayAnimation attackAnimation = new PlayAnimation(); attackAnimation.SetParameters(animator, "DeathSequence", offTriggers); // Set up condition for the attack sequence Triggered attackCondition = new Triggered(); // Set up attack sequence Sequence attackSequence = new Sequence(); attackSequence.addBehaviour(attackCondition); attackSequence.addBehaviour(attackAnimation); // --------------------------------------------------- // The Drill Sequence // Set up the drill condition DrillBehaviour drillBehaviour = new DrillBehaviour(); drillBehaviour.SetParameters(false); // Set up drill animation PlayAnimation drillAnimation = new PlayAnimation(); drillAnimation.SetParameters(animator, "DrillSequence", null, onDoorDrilling); // Set up drill sequence Sequence drillSequence = new Sequence(); drillSequence.addBehaviour(drillBehaviour); //drillSequence.addBehaviour(seekPanel); drillSequence.addBehaviour(drillAnimation); // --------------------------------------------------- // The Rage Sequence // Set up the rage condition DrillBehaviour rageBehaviour = new DrillBehaviour(); rageBehaviour.SetParameters(true); // Set up rage animation PlayAnimation rageAnimation = new PlayAnimation(); rageAnimation.SetParameters(animator, "RageSequence"); // Set up rage sequence Sequence rageSequence = new Sequence(); rageSequence.addBehaviour(rageBehaviour); rageSequence.addBehaviour(rageAnimation); //---------------------------------------------------- // The Proximity Sequence // Set up within range condition for search sequence WithinRange withinSearch = new WithinRange(); withinSearch.SetParameters(player.gameObject, m_searchRange); // Set up line of sight condition for search sequence LineOfSight inSight = new LineOfSight(); inSight.SetParameters(player.gameObject, m_sightRange, m_eyeLocation); // Set up the close chase behaviour SetTargetBehaviour closeChase = new SetTargetBehaviour(); closeChase.SetParameters(player.gameObject, m_searchSpeed, "CloseChase", onProximityDetection); // Set up arm extended animation PlayAnimation armExtended = new PlayAnimation(); armExtended.SetParameters(animator, "ArmExtended"); // Set up chase sequence Sequence closeChaseSequence = new Sequence(); closeChaseSequence.addBehaviour(withinSearch); closeChaseSequence.addBehaviour(inSight); closeChaseSequence.addBehaviour(closeChase); closeChaseSequence.addBehaviour(armExtended); //---------------------------------------------------- // The Search Sequence // Turn towards the player FaceTarget facePlayer = new FaceTarget(); facePlayer.SetParameters(player.gameObject, m_rotationSpeed); // Set up arm extended animation PlayAnimation searchAnimation = new PlayAnimation(); searchAnimation.SetParameters(animator, "Search", null, searching); // Set up search sequence Sequence searchSequence = new Sequence(); searchSequence.addBehaviour(withinSearch); searchSequence.addBehaviour(facePlayer); searchSequence.addBehaviour(searchAnimation); //---------------------------------------------------- // The Chase Sequence // Set up the chase behaviour SetTargetBehaviour chasePlayer = new SetTargetBehaviour(); chasePlayer.SetParameters(player.gameObject, m_chaseSpeed, "Chase", chasing); // Set up within range condition for chase sequence WithinRange withinChase = new WithinRange(); withinChase.SetParameters(player.gameObject, m_sightRange); // Set up chase sequence Sequence chaseSequence = new Sequence(); chaseSequence.addBehaviour(withinChase); chaseSequence.addBehaviour(inSight); chaseSequence.addBehaviour(chasePlayer); //---------------------------------------------------- // The Investigate Sequence // Set up alert condition AlertCondition alertCondition = new AlertCondition(); // Set up investigate sequence Sequence investigateSequence = new Sequence(); investigateSequence.addBehaviour(alertCondition); investigateSequence.addBehaviour(m_investigateArea); //---------------------------------------------------- // The Patrol Sequence // Set up the patrol targets Patrol patrolDestination = new Patrol(); patrolDestination.SetParameters(m_waypoints); // Set up the patrol behaviour SetTargetBehaviour patrolBehaviour = new SetTargetBehaviour(); patrolBehaviour.SetParameters(patrolDestination, m_patrolSpeed, "Patrol", patrolling); // Look for nearest waypoint then continue with the patrol from there //---------------------------------------------------- // The Main Selector // Set up main selector Selector mainSelector = new Selector(); mainSelector.addBehaviour(attackSequence); mainSelector.addBehaviour(drillSequence); mainSelector.addBehaviour(rageSequence); mainSelector.addBehaviour(closeChaseSequence); mainSelector.addBehaviour(searchSequence); mainSelector.addBehaviour(chaseSequence); mainSelector.addBehaviour(investigateSequence); mainSelector.addBehaviour(patrolBehaviour); // Add all sequences to the behaviour list m_behaviours.Add(mainSelector); }
// Use this for initialization void Start() { drScript = GetComponent <DrLeben>(); if (drScript) { drScript.enabled = false; } //lebenAudio = GetComponent<AudioSource> (); eventManager = FindObjectOfType <EventManager>(); navAgent = GetComponent <NavMeshAgent>(); player = FindObjectOfType <Player>(); navAgent.SetDestination(transform.position); animator = GetComponent <Animator>(); // --------------------------------------------------- // The Drill Sequence // Set up the drill condition InitialDrill drillBehaviour = new InitialDrill(); drillBehaviour.SetParameters(false); // Set up drill animation PlayAnimation drillAnimation = new PlayAnimation(); drillAnimation.SetParameters(animator, "DrillSequence"); // Set up drill sequence Sequence drillSequence = new Sequence(); drillSequence.addBehaviour(drillBehaviour); //drillSequence.addBehaviour(seekPanel); drillSequence.addBehaviour(drillAnimation); // --------------------------------------------------- // The Rage Sequence // Set up the rage condition InitialDrill rageBehaviour = new InitialDrill(); rageBehaviour.SetParameters(true); // Set up rage animation PlayAnimation rageAnimation = new PlayAnimation(); rageAnimation.SetParameters(animator, "RageSequence"); // Set up rage sequence Sequence rageSequence = new Sequence(); rageSequence.addBehaviour(rageBehaviour); rageSequence.addBehaviour(rageAnimation); //---------------------------------------------------- // The Investigate Sequence // Set up alert condition AlertCondition alertCondition = new AlertCondition(); // Set up investigate sequence Sequence investigateSequence = new Sequence(); investigateSequence.addBehaviour(alertCondition); investigateSequence.addBehaviour(m_investigateArea); //---------------------------------------------------- // The Main Selector // Set up main selector Selector mainSelector = new Selector(); mainSelector.addBehaviour(drillSequence); mainSelector.addBehaviour(rageSequence); mainSelector.addBehaviour(investigateSequence); // Add all sequences to the behaviour list m_behaviours.Add(mainSelector); //if (!batonReference) // Debug.Log("Baton Reference not set on Dr. Leben"); }