public void SpawnEnemy()
    {
        EnemyPenguinStatus     newEnemyPenguin = CheckForAvailableGarbageEnemy();
        EnemyHealthBarPosition newEnemyUI      = CheckForAvailableGarbageEnemyUI();

        Transform spawnPoint = FindFurthestSpawnPoint();

        if (newEnemyPenguin == null)
        {
            //Debug.Log("Instantiating new enemy");
            //Instantiate.
            newEnemyPenguin = Instantiate(prefabEnemy, spawnPoint.position, spawnPoint.rotation);

            listGarbageEnemies.Add(newEnemyPenguin);
        }
        else
        {
            //Debug.Log("Recycling new enemy");
            newEnemyPenguin.transform.position = spawnPoint.position;
        }

        if (newEnemyUI == null)
        {
            newEnemyUI = Instantiate(prefabEnemyStatUI, Vector3.zero, Quaternion.identity);
            newEnemyUI.transform.SetParent(prefabEnemyStatUI.transform.parent, true);
            newEnemyUI.transform.localScale = Vector3.one;
            RectTransform rtUI = newEnemyUI.transform as RectTransform;

            rtUI.SetAsFirstSibling();
            listGarbageEnemyUIs.Add(newEnemyUI);
        }
        else
        {
        }

        newEnemyPenguin.transform.position = spawnPoint.position;
        newEnemyPenguin.gameObject.SetActive(true);
        newEnemyUI.gameObject.SetActive(true);

        //Pair UI and unit.
        newEnemyUI.target       = newEnemyPenguin.transform;
        newEnemyPenguin.statsUI = newEnemyUI;

        newEnemyPenguin.Init();
    }
    private EnemyHealthBarPosition CheckForAvailableGarbageEnemyUI()
    {
        EnemyHealthBarPosition ui = null;

        if (listGarbageEnemyUIs.Count > 0)
        {
            //Check which one is active.
            foreach (EnemyHealthBarPosition u in listGarbageEnemyUIs)
            {
                if (!u.isActiveAndEnabled)
                {
                    ui = u;
                }
            }
        }

        return(ui);
    }
Esempio n. 3
0
 public void Despawn()
 {
     statsUI = null;
     gameObject.SetActive(false);
 }