Example #1
0
    public NextWayPoint GetNextWayPoint(Transform t, int lastWayPoint)
    {
        int        min = wayPoints[0].enemies.Count;
        List <int> ids = new List <int>();

        foreach (WayPoint w in wayPoints)
        {
            if (w.enemies.Count < min)
            {
                min = w.enemies.Count;
                ids = new List <int>();
                ids.Add(w.ID);
            }
            else if (w.enemies.Count == min)
            {
                ids.Add(w.ID);
            }
        }

        //int num = (int)Random.Range(0, ids.Count -1);
        int num = (int)Random.Range(0, ids.Count);

        wayPoints[ids[num]].enemies.Add(t);
        if (lastWayPoint != -1)
        {
            wayPoints[lastWayPoint].enemies.Remove(t);
        }

        NextWayPoint nWayPoint = new NextWayPoint();

        nWayPoint.idNextWaypoint = ids[num];
        nWayPoint.nextPoint      = wayPoints[ids[num]].wayPoint;

        return(nWayPoint);
    }
Example #2
0
 public override TaskStatus OnUpdate()
 {
     if (wpManager != null)
     {
         if (isGoingToKillPlayer.Value)
         {
             return(TaskStatus.Failure);
         }
         else
         {
             NextWayPoint wp = wpManager.GetNextWayPoint(transform, lastWayPoint.Value);
             target.Value       = wp.nextPoint;
             lastWayPoint.Value = wp.idNextWaypoint;
             return(TaskStatus.Success);
         }
     }
     else
     {
         return(TaskStatus.Failure);
     }
 }