using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class Enemie_Spawn_System : MonoBehaviour { [SerializeField] public int roundCounter = 0; //Kann die Runden im Inspector manuell erhöhen [SerializeField] public int roundModifierMax3 = 0; // regelt die schwierigkeit der Anfangsrunden public int spawnCounter = 0; // zählt wie viele Enemies gespawnt wurden & sorgt dafür, dass der Shop wieder gespawnt wird public GameObject Tank; // <---- Zu spawnende Prefab Einfügen public GameObject Standart; // <---- Zu spawnende Prefab Einfügen public GameObject Kamikaze; // <---- Zu spawnende Prefab Einfügen public GameObject ShopPrefab; public Transform SpawnShop; // Punkt, an welchem der Shop respawnt wird public Transform SpawnMitteOben; // Punkt, von dem die Enemies gespawnt werden public Transform SpawnMitteUnten; // Punkt, von dem die Enemies gespawnt werden public Transform SpawnMitteLinks; // Punkt, von dem die Enemies gespawnt werden public Transform SpawnMitteRechts; // Punkt, von dem die Enemies gespawnt werden public Transform SpawnLinksUnten; // Punkt, von dem die Enemies gespawnt werden public Transform SpawnRechtsUnten; // Punkt, von dem die Enemies gespawnt werden public Transform SpawnLinksOben; // Punkt, von dem die Enemies gespawnt werden public Transform SpawnRechtsOben; // Punkt, von dem die Enemies gespawnt werden public TextMeshProUGUI Round_Counter; // <---- Kontrolliert die Rundenanzeige public TextMeshProUGUI Enemie_Counter; // <---- Kontrolliert die Anzahlanzeige der Gegner private bool canSpawnShop = false; private void Start() { //ShopPrefab = Resources.Load("Shop Prefab"); canSpawnShop = false; } private void Update() { ShopRespawner(); } public void SpawnEnemies() { if (Tank != null && Standart != null && Kamikaze != null && SpawnMitteOben != null && SpawnMitteUnten != null && SpawnMitteLinks != null && SpawnMitteRechts != null && SpawnLinksUnten != null && SpawnRechtsUnten != null && SpawnLinksOben != null && SpawnRechtsOben != null) { Destroy(GameObject.FindGameObjectWithTag("Shop Prefab")); roundCounter++; Round_Counter.text = roundCounter.ToString(); Instantiate(Standart, SpawnMitteOben.position, SpawnMitteOben.rotation); Instantiate(Standart, SpawnMitteUnten.position, SpawnMitteUnten.rotation); Instantiate(Kamikaze, SpawnMitteLinks.position, SpawnMitteLinks.rotation); Instantiate(Kamikaze, SpawnMitteRechts.position, SpawnMitteRechts.rotation); ChangeEnemyCounter(4); if (roundCounter == roundModifierMax3) // Special-Runde0 { Instantiate(Kamikaze, SpawnLinksUnten.position, SpawnLinksUnten.rotation); Instantiate(Kamikaze, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation); Instantiate(Kamikaze, SpawnLinksOben.position, SpawnLinksOben.rotation); Instantiate(Kamikaze, SpawnRechtsOben.position, SpawnRechtsOben.rotation); ChangeEnemyCounter(4); } if (roundCounter == roundModifierMax3 * 2) // Special-Runde1 Kamikaze { Instantiate(Standart, SpawnLinksUnten.position, SpawnLinksUnten.rotation); Instantiate(Standart, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation); Instantiate(Standart, SpawnLinksOben.position, SpawnLinksOben.rotation); Instantiate(Standart, SpawnRechtsOben.position, SpawnRechtsOben.rotation); ChangeEnemyCounter(4); } if (roundCounter == roundModifierMax3 * 3) // Special-Runde2 Standart Enemies & Tanks { Instantiate(Tank, SpawnLinksUnten.position, SpawnLinksUnten.rotation); Instantiate(Tank, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation); Instantiate(Tank, SpawnLinksOben.position, SpawnLinksOben.rotation); Instantiate(Tank, SpawnRechtsOben.position, SpawnRechtsOben.rotation); Instantiate(Standart, SpawnMitteOben.position, SpawnMitteOben.rotation); Instantiate(Standart, SpawnMitteUnten.position, SpawnMitteUnten.rotation); Instantiate(Standart, SpawnMitteLinks.position, SpawnMitteLinks.rotation); Instantiate(Standart, SpawnMitteRechts.position, SpawnMitteRechts.rotation); ChangeEnemyCounter(8); } if (roundCounter >= 20) { for (int i = 0 + roundCounter - 15; i > 0; i--) { Instantiate(Tank, SpawnLinksUnten.position, SpawnLinksUnten.rotation); Instantiate(Tank, SpawnRechtsUnten.position, SpawnRechtsUnten.rotation); Instantiate(Tank, SpawnLinksOben.position, SpawnLinksOben.rotation); Instantiate(Tank, SpawnRechtsOben.position, SpawnRechtsOben.rotation); Instantiate(Standart, SpawnMitteOben.position, SpawnMitteOben.rotation); Instantiate(Standart, SpawnMitteUnten.position, SpawnMitteUnten.rotation); Instantiate(Standart, SpawnMitteLinks.position, SpawnMitteLinks.rotation); Instantiate(Standart, SpawnMitteRechts.position, SpawnMitteRechts.rotation); Instantiate(Kamikaze, SpawnLinksOben.position, SpawnLinksOben.rotation); Instantiate(Kamikaze, SpawnRechtsOben.position, SpawnRechtsOben.rotation); Instantiate(Kamikaze, SpawnMitteOben.position, SpawnMitteOben.rotation); Instantiate(Kamikaze, SpawnMitteUnten.position, SpawnMitteUnten.rotation); ChangeEnemyCounter(12); } } } } public void ShopRespawner() { if (spawnCounter <= 0 && ShopPrefab != null && canSpawnShop) { Instantiate(ShopPrefab, SpawnShop.position, SpawnShop.rotation); Debug.Log("Spawned Shop" + roundCounter); canSpawnShop = false; } } public void ChangeEnemyCounter(int count) { spawnCounter += count; Enemie_Counter.text = spawnCounter.ToString(); canSpawnShop = true; } }