void removeUnit(Transform t) { int index = 0; goal = null; for (int i = 0; i < group.Length; i++) { if (group[i].gameObject.transform == t) { index = i; } } UnitEmergent[] temp = new UnitEmergent[group.Length - 1]; for (int i = 0; i < temp.Length; i++) { if (i == index) { temp[i] = group[group.Length - 1]; } else { temp[i] = group[i]; } } group = temp; }
void setGoal() { if (hasValidGoal(0)) { return; } List <UnitEmergent> followable = new List <UnitEmergent>(); for (int i = 0; i < group.Length; i++) { if (inVision(group[i].gameObject.transform) && group[i].hasValidGoal(0)) { followable.Add(group[i]); } } if (followable.Count < 1) { followable.Add(group[0]); } float nearest = Vector3.Distance(transform.position, followable[0].gameObject.transform.position); int nearIndex = 0; for (int i = 0; i < followable.Count; i++) { float dist = Vector3.Distance(transform.position, followable[i].gameObject.transform.position); if ((dist != 0 && dist < nearest && followable[i].GetComponent <UnitEmergent>().goal != transform) || nearest == 0) { nearest = dist; nearIndex = i; } } int taken = 0; for (int i = 0; i < group.Length; i++) { if (group[i].goal != null && group[i].goal.gameObject.transform == followable[nearIndex].gameObject.transform) { taken++; } } if (taken > 1) { return; } if (taken == 1) { left = false; } else { left = true; } goal = followable[nearIndex]; goalScript = followable[nearIndex]; }