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