// Finding with tags
    public void UpdateTarget(GameObject[] monsters, Vector3 positionSelf)
    {
        GameObject nearestTarget    = null;
        float      shortestDistance = Mathf.Infinity;

        foreach (GameObject monster in monsters)
        {
            float dist = Vector3.Distance(positionSelf, monster.transform.position);
            if (dist < shortestDistance)
            {
                nearestTarget    = monster;
                shortestDistance = dist;
            }
        }

        if (nearestTarget != null && shortestDistance <= range)
        {
            tower.UpdateTarget(nearestTarget.transform);
        }
        else
        {
            tower.UpdateTarget(null);
        }
    }