public void Spawn()
    {
        Virus[] viruses = GetComponentsInChildren <Virus>();
        if (viruses.Length >= MaxViruses)
        {
            ShipSpawner shipSpawner = GetComponentInChildren <ShipSpawner>();
            GameObject  ship        = shipSpawner.Spawn();
            ship.GetComponent <Ship>().MakeUnfriendly();
        }
        else
        {
            PolygonCollider2D col      = GetComponent <PolygonCollider2D>();
            Vector2           position = new Vector2();
            bool spawn = false;

            for (int i = 0; i < 1000; ++i)
            {
                position = Random.insideUnitCircle * 2 + new Vector2(transform.position.x, transform.position.y);
                bool inSpawnZone = col.OverlapPoint(position);

                if (inSpawnZone)
                {
                    spawn = true;
                    break;
                }
            }

            if (spawn)
            {
                GameObject virus = (GameObject)Instantiate(Virus, position, transform.rotation, transform);
                Debug.Log("SPAWNED");
            }
            else
            {
                Debug.Log("DUPA!");
            }
        }
    }