//Assign the defenders targets based on their number public void orderDefendersToMoveTowardsTarget(Vector3 rallyPointPossitionA, Vector3 rallyPointPossitionB, Vector3 rallyPointPossitionC) //Gets called from an Action in the scrTowerRallyPointPos { foreach (GameObject defender in defenders) //Runs for each defender in the list defender { scrDefenderMovement defenderMovement = defender.GetComponent <scrDefenderMovement>(); //Gets the defenders movement script scrRallyPointPlacement defenderPossition = defender.GetComponent <scrRallyPointPlacement>(); //Get a reference to the instances defender stats script if (defenderPossition.DefenderPossition == 1) { defenderMovement.getRallyPointPos(rallyPointPossitionA); //Feeds the movement funciton for each defender, the possition of the rallypoint } if (defenderPossition.DefenderPossition == 2) { defenderMovement.getRallyPointPos(rallyPointPossitionB); //Feeds the movement funciton for each defender, the possition of the rallypoint } if (defenderPossition.DefenderPossition == 3) { defenderMovement.getRallyPointPos(rallyPointPossitionC); //Feeds the movement funciton for each defender, the possition of the rallypoint } else if (defenderPossition.DefenderPossition < 1 || defenderPossition.DefenderPossition > 3) { Debug.Log("Incorrect number assigned to DefenderPossition variable in scrDefenderSpawner script"); } //Get instance of defenderMovement script //moveTowardsTarget(); } }
private void spawnDefenders() { for (int i = 0; i < pooler.poolSizeCount; i++) { GameObject newInstance = pooler.GetInstanceFromPool(); newInstance.transform.position = transform.position; //Spawn the defenders at tower location defenders.Add(newInstance); //Add defender to the list scrRallyPointPlacement defenderPossition = newInstance.GetComponent <scrRallyPointPlacement>(); //Get a reference to the instances defender stats script if (i != 0 && i < 4) //Assign possitions for the newly instantiated defenders { defenderPossition.DefenderPossition = i + 1; } scrDefenderAnimation defenderAnimator = newInstance.GetComponent <scrDefenderAnimation>(); defenderAnimator.GetDefenderRespawnPossition(defenderRespawnPos.position); //Assign the tower possition as the respawn possition for defenders DefenderEngagementHandler defender = newInstance.GetComponent <DefenderEngagementHandler>(); defender.AssignDefenderTowerTargets(defenderTowerTargets); //Assign this script for local defenders, so they can use the list of targets defenderTowerTargets.InitializeLocalDefenders(defender); //Assign the defenders to the defenderTowerTargets, so they can be issued orders from the defenderTowerTargetets script newInstance.SetActive(true); //Set defenders to active } }