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); }
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); } }