Ejemplo n.º 1
0
    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);
        }
    }