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); }
public void Despawn() { statsUI = null; gameObject.SetActive(false); }