public static void FollowerMovement(TunnelArena myArena, float speed) { List <Copter> followers = myArena.GetAllCopters();//Is the leader part of this list? No! //bool isLeaderPartOfList = followers.Contains(myArena.GetLeader()); //Debug.Log(isLeaderPartOfList); foreach (Copter follower in followers) { Vector2 movementVector = new Vector2(0.0f, 0.0f); movementVector += AvoidWalls(follower, myArena, 30, 0.5f);//With repulsionMagnitude = 3 and radius = 0.5f they still sometimes move through walls. movementVector += SwarmingFormulas.Function3(follower, myArena.GetLeader(), 0.5f, 20.0f, 0.6f); foreach (Copter otherCopter in followers) { if (otherCopter != follower) { movementVector += SwarmingFormulas.Function3(follower, otherCopter, 0.3f, 40.0f, 0.6f); } } if (movementVector.magnitude > 1.0f) { movementVector.Normalize(); } follower.SetPosition(follower.Position() + movementVector * speed); } }