130 lines
6.3 KiB
C#
130 lines
6.3 KiB
C#
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<GameObject>("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;
|
|
}
|
|
}
|