示例#1
0
    // 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;
            }
        }
    }
示例#2
0
 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);
 }