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
- {
- public GameObject[] enemyPrefab;
- public GameObject[] powerupPrefabs;
- private float spawnRange = 9;
- public int enemyCount;
- public int waveNumber = 1;
- //boss variables
- public GameObject bossPrefab;
- public GameObject[] miniEnemyPrefabs;
- public int bossRound;
- void Start()
- {//calls the spawns enemy method and number of enemies to spawn and spawns powerups
- int randomPowerup = Random.Range(0, powerupPrefabs.Length);
- Instantiate(powerupPrefabs[randomPowerup], GenerateSpawnPosition(), powerupPrefabs[randomPowerup].transform.rotation);
- SpawnEnemyWave(waveNumber);
- }
- // Update is called once per frame
- void Update()
- {
- enemyCount = FindObjectsOfType<Enemy>().Length;
- if (enemyCount == 0)
- {
- SpawnEnemyWave(waveNumber);
- waveNumber++;
- if (waveNumber % bossRound == 0)
- {
- SpawnBossWave(waveNumber);
- }
- else
- {
- SpawnEnemyWave(waveNumber);
- }
- int randomPowerup = Random.Range(0, powerupPrefabs.Length);
- Instantiate(powerupPrefabs[randomPowerup], GenerateSpawnPosition(), powerupPrefabs[randomPowerup].transform.rotation);
- }
- }
- //makes rando spawn pos
- private Vector3 GenerateSpawnPosition()
- {
- float spawnPosX = Random.Range(-spawnRange, spawnRange);
- float spawnPosZ = Random.Range(-spawnRange, spawnRange);
- Vector3 randomPos = new Vector3(spawnPosX, 1, spawnPosZ);
- return randomPos;
- }
- void SpawnBossWave(int currentRound)
- {
- int miniEnemysToSpawn;
- //we don't want to divide by 0
- if (bossRound != 0)
- {
- miniEnemysToSpawn = currentRound / bossRound;
- }
- else
- {
- miniEnemysToSpawn = 1;
- }
- var boss = Instantiate(bossPrefab, GenerateSpawnPosition(), bossPrefab.transform.rotation);
- boss.GetComponent<Enemy>().miniEnemySpawnCount = miniEnemysToSpawn;
- }
- public void SpawnMiniEnemy (int amount)
- {
- for(int i = 0; i < amount; i++)
- {
- int randomMini = Random.Range(0, miniEnemyPrefabs.Length);
- Instantiate(miniEnemyPrefabs[randomMini], GenerateSpawnPosition(), miniEnemyPrefabs[randomMini].transform.rotation);
- }
- }
- //spawns enemies increasing by one each wave
- void SpawnEnemyWave(int enemiesToSpawn)
- {
- for (int i = 0; i < enemiesToSpawn; i++)
- {
- // Instantiate(enemyPrefab, GenerateSpawnPosition(), enemyPrefab.transform.rotation);
- int randomEnemy = Random.Range(0, enemyPrefab.Length);
- Instantiate(enemyPrefab[randomEnemy], GenerateSpawnPosition(), enemyPrefab[randomEnemy].transform.rotation);
- }
- }
- }
Add Comment
Please, Sign In to add comment