// Start is called before the first frame update void Awake() { zombiesObj = GameObject.FindGameObjectsWithTag("Zombie"); foreach (GameObject obj in zombiesObj) { AITargetController zombie = obj.GetComponent <AITargetController>(); if (zombie == null) { Debug.Log("no zombie"); } zombies.Add(zombie); } GameObject[] wpPool = GameObject.FindGameObjectsWithTag("Waypoint"); foreach (GameObject obj in wpPool) { Debug.Log(obj.name); if (obj.GetComponent <Waypoint>().area == Waypoint.AREATYPE.Callout) { waypointCallout.Add(obj.transform); } else if (obj.GetComponent <Waypoint>().area == Waypoint.AREATYPE.Hangout) { waypointHangout.Add(obj.transform); } else { continue; } } for (int i = 0; i < zombies.Count; i++) { if (i < callAreaLimit) { zombies[i].SetPath(waypointCallout); zombies[i].SetDirection(waypointCallout[i].gameObject); zombies[i].pathIterator = i; zombies[i].area = AITargetController.AREA.Callout; } else { zombies[i].SetPath(waypointHangout); zombies[i].SetDirection(waypointHangout[i].gameObject); zombies[i].pathIterator = Random.Range(2, waypointHangout.Count); zombies[i].area = AITargetController.AREA.Hangout; } } }
public Transform RequestAIDestination() { if (AITargetController.GetTaken() >= positions.Count) { return(targets[Random.Range(0, targets.Count - 1)]._position); } else { foreach (AITargetController AIpos in targets) { if (AIpos.MarkTaken()) { return(AIpos._position); } } } return(null); }