Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class SpawnManager : MonoBehaviour
- {
- [SerializeField] private GameObject _enemyPrefab;
- [SerializeField] private GameObject _bigEnemyPrefab;
- [SerializeField] private GameObject _enemyContainer;
- [SerializeField] private GameObject _wave2Enemy;
- [SerializeField] private GameObject _wave2EnemyFacingRight;
- [SerializeField] private float _waitTime = 3f;
- [SerializeField] private float _wave2WaitTime = 6f;
- [SerializeField] private float _wave2WaitTime2 = 6f;
- [SerializeField] private float _bigEnemyWaitTime = 6f;
- [SerializeField] private List<GameObject> _enemySpawns = new List<GameObject>();
- [SerializeField] private List<GameObject> _bigEnemySpawns = new List<GameObject>();
- [SerializeField] private GameObject[] _powerUps;
- [SerializeField] private bool _stopSpawningOnPlayerDeath;
- [SerializeField] private bool _stopSpawning;
- public void StartSpawn()
- {
- StartCoroutine(SpawnEnemyRoutine());
- StartCoroutine(SpawnPowerUpRoutine());
- StartCoroutine(SpawnBigEnemy());
- }
- public void SubtractFromEnemyList()
- {
- _enemySpawns.Remove(_enemyPrefab);
- if (_enemySpawns.Count == 0 && _bigEnemySpawns.Count == 0)
- {
- _stopSpawning = true;
- StartCoroutine(StartSecondWaveRtoL());
- StartCoroutine(StartSecondWaveLtoRight());
- }
- }
- public void SubtractFromBigEnemyList()
- {
- _bigEnemySpawns.Remove(_bigEnemyPrefab);
- }
- public void AddToEnemyList()
- {
- _enemySpawns.Add(_enemyPrefab);
- }
- public void AddToBigEnemyList()
- {
- _enemySpawns.Add(_bigEnemyPrefab);
- }
- IEnumerator SpawnEnemyRoutine()
- {
- yield return new WaitForSeconds(3.0f);
- while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
- {
- Vector3 spawnPosRando = new Vector3(Random.Range(-9.21f, 9.21f), 12f, 0);
- GameObject newEnemy = Instantiate(_enemyPrefab, spawnPosRando, Quaternion.identity);
- newEnemy.transform.parent = _enemyContainer.transform;
- yield return new WaitForSeconds(_waitTime);
- }
- }
- IEnumerator SpawnBigEnemy()
- {
- yield return new WaitForSeconds(10f);
- while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
- {
- Vector3 spawnPosRandom = new Vector3(Random.Range(9.21f, -9.21f), 12f, 0);
- GameObject newBigEnemy = Instantiate(_bigEnemyPrefab, spawnPosRandom, Quaternion.identity);
- newBigEnemy.transform.parent = _enemyContainer.transform;
- yield return new WaitForSeconds(_bigEnemyWaitTime);
- }
- }
- IEnumerator SpawnPowerUpRoutine()
- {
- yield return new WaitForSeconds(3.0f);
- while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
- {
- Vector3 spawnPosRando = new Vector3(Random.Range(-9.21f, 9.21f), 12f, 0);
- int randompowerUpSpawn = Random.Range(0, 7);
- Instantiate(_powerUps[randompowerUpSpawn], spawnPosRando, Quaternion.identity);
- yield return new WaitForSeconds(Random.Range(3f, 10f));
- }
- }
- //*************Start Second Wave / Restart Courutine PowerUps*************//
- IEnumerator StartSecondWaveRtoL()
- {
- yield return new WaitForSeconds(6f);
- _stopSpawning = false;
- yield return new WaitForSeconds(3f);
- StartCoroutine(SpawnPowerUpRoutine()); //*************restarting the powerUp Coroutine***********//
- while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
- {
- Vector3 randomXPos = new Vector3(12f, Random.Range(-0.52f, 4.80f), 0);
- GameObject newEnemy = Instantiate(_wave2Enemy, randomXPos, Quaternion.identity);
- newEnemy.transform.parent = _enemyContainer.transform;
- yield return new WaitForSeconds(_wave2WaitTime);
- }
- }
- IEnumerator StartSecondWaveLtoRight()
- {
- yield return new WaitForSeconds(10f);
- while (_stopSpawningOnPlayerDeath == false && _stopSpawning == false)
- {
- Vector3 randomXpos = new Vector3(-12f, Random.Range(-0.52f, 4.80f), 0);
- GameObject newEnemy = Instantiate(_wave2EnemyFacingRight, randomXpos, Quaternion.identity);
- newEnemy.transform.parent = _enemyContainer.transform;
- yield return new WaitForSeconds(_wave2WaitTime2);
- }
- }
- public void OnPlayerDeath()
- {
- _stopSpawningOnPlayerDeath = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement