Advertisement
SizilStank

Untitled

Feb 17th, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.70 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class SpawnManager : MonoBehaviour
  6. {
  7.  
  8.     [SerializeField] private GameObject _enemyPrefab;
  9.     [SerializeField] private GameObject _bigEnemyPrefab;
  10.     [SerializeField] private GameObject _enemyContainer;
  11.     [SerializeField] private GameObject _wave2Enemy;
  12.     [SerializeField] private GameObject _wave2EnemyFacingRight;
  13.  
  14.     [SerializeField] private float _waitTime = 3f;
  15.     [SerializeField] private float _wave2WaitTime = 6f;
  16.     [SerializeField] private float _wave2WaitTime2 = 6f;
  17.     [SerializeField] private float _bigEnemyWaitTime = 6f;
  18.  
  19.     [SerializeField] private List<GameObject> _enemySpawns = new List<GameObject>();
  20.     [SerializeField] private List<GameObject> _bigEnemySpawns = new List<GameObject>();
  21.  
  22.     [SerializeField] private GameObject[] _powerUps;
  23.  
  24.     [SerializeField] private bool _stopSpawningOnPlayerDeath;
  25.     [SerializeField] private bool _stopSpawning;
  26.  
  27.     public void StartSpawn()
  28.     {
  29.         StartCoroutine(SpawnEnemyRoutine());
  30.         StartCoroutine(SpawnPowerUpRoutine());
  31.         StartCoroutine(SpawnBigEnemy());
  32.     }
  33.  
  34.     public void SubtractFromEnemyList()
  35.     {
  36.         _enemySpawns.Remove(_enemyPrefab);
  37.  
  38.         if (_enemySpawns.Count == 0 && _bigEnemySpawns.Count == 0)
  39.         {
  40.             _stopSpawning = true;
  41.             StartCoroutine(StartSecondWaveRtoL());
  42.             StartCoroutine(StartSecondWaveLtoRight());
  43.         }
  44.     }
  45.  
  46.     public void SubtractFromBigEnemyList()
  47.     {
  48.         _bigEnemySpawns.Remove(_bigEnemyPrefab);
  49.     }
  50.  
  51.     public void AddToEnemyList()
  52.     {
  53.         _enemySpawns.Add(_enemyPrefab);
  54.     }
  55.     public void AddToBigEnemyList()
  56.     {
  57.         _enemySpawns.Add(_bigEnemyPrefab);
  58.     }
  59.  
  60.     IEnumerator SpawnEnemyRoutine()
  61.     {
  62.         yield return new WaitForSeconds(3.0f);
  63.         while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
  64.         {
  65.             Vector3 spawnPosRando = new Vector3(Random.Range(-9.21f, 9.21f), 12f, 0);
  66.             GameObject newEnemy = Instantiate(_enemyPrefab, spawnPosRando, Quaternion.identity);
  67.             newEnemy.transform.parent = _enemyContainer.transform;
  68.  
  69.             yield return new WaitForSeconds(_waitTime);
  70.         }
  71.     }
  72.  
  73.     IEnumerator SpawnBigEnemy()
  74.     {
  75.         yield return new WaitForSeconds(10f);
  76.  
  77.         while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
  78.         {
  79.             Vector3 spawnPosRandom = new Vector3(Random.Range(9.21f, -9.21f), 12f, 0);
  80.             GameObject newBigEnemy = Instantiate(_bigEnemyPrefab, spawnPosRandom, Quaternion.identity);
  81.             newBigEnemy.transform.parent = _enemyContainer.transform;
  82.  
  83.             yield return new WaitForSeconds(_bigEnemyWaitTime);
  84.         }
  85.     }
  86.  
  87.     IEnumerator SpawnPowerUpRoutine()
  88.     {
  89.         yield return new WaitForSeconds(3.0f);
  90.         while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
  91.         {
  92.             Vector3 spawnPosRando = new Vector3(Random.Range(-9.21f, 9.21f), 12f, 0);
  93.             int randompowerUpSpawn = Random.Range(0, 7);
  94.             Instantiate(_powerUps[randompowerUpSpawn], spawnPosRando, Quaternion.identity);
  95.  
  96.             yield return new WaitForSeconds(Random.Range(3f, 10f));
  97.         }
  98.     }
  99.  
  100.  
  101.     //*************Start Second Wave / Restart Courutine PowerUps*************//
  102.  
  103.     IEnumerator StartSecondWaveRtoL()
  104.     {
  105.         yield return new WaitForSeconds(6f);
  106.  
  107.         _stopSpawning = false;
  108.  
  109.         yield return new WaitForSeconds(3f);
  110.  
  111.         StartCoroutine(SpawnPowerUpRoutine()); //*************restarting the powerUp Coroutine***********//
  112.  
  113.         while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
  114.         {
  115.             Vector3 randomXPos = new Vector3(12f, Random.Range(-0.52f, 4.80f), 0);
  116.             GameObject newEnemy = Instantiate(_wave2Enemy, randomXPos, Quaternion.identity);
  117.             newEnemy.transform.parent = _enemyContainer.transform;
  118.  
  119.             yield return new WaitForSeconds(_wave2WaitTime);
  120.         }
  121.     }
  122.  
  123.     IEnumerator StartSecondWaveLtoRight()
  124.     {
  125.         yield return new WaitForSeconds(10f);
  126.  
  127.         while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
  128.         {
  129.             Vector3 randomXpos = new Vector3(-12f, Random.Range(-0.52f, 4.80f), 0);
  130.             GameObject newEnemy = Instantiate(_wave2EnemyFacingRight, randomXpos, Quaternion.identity);
  131.             newEnemy.transform.parent = _enemyContainer.transform;
  132.  
  133.             yield return new WaitForSeconds(_wave2WaitTime2);
  134.         }
  135.     }
  136.        
  137.  
  138.     public void OnPlayerDeath()
  139.     {
  140.             _stopSpawningOnPlayerDeath = true;
  141.     }
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement