private void InitiateSpawner() { //stock frustum borders Vector3 bottomLeft = new Vector3(0, 0, depthFromCam); Vector3 topLeft = new Vector3(0, 1, depthFromCam); Vector3 topRight = new Vector3(1, 1, depthFromCam); Vector3 bottomright = new Vector3(1, 0, depthFromCam); //setup enemies that can spawn at each border of the screen RequinScie roquin = new RequinScie(); roquin.prefab = requinPrefab; CalmarNouille calmar = new CalmarNouille(); calmar.prefab = calmarPrefab; SeauMeduse meduse = new SeauMeduse(); meduse.prefab = medusePrefab; MureneChaussette chaussette = new MureneChaussette(); chaussette.prefab = murenePrefab; Main main = new Main(); main.prefab = mainPrefab; List <Enemy> leftEnemies = new List <Enemy>(); leftEnemies.Add(roquin); leftEnemies.Add(calmar); leftEnemies.Add(chaussette); List <Enemy> topEnemies = new List <Enemy>(); topEnemies.Add(main); List <Enemy> rightEnemies = new List <Enemy>(); rightEnemies.Add(roquin); rightEnemies.Add(calmar); rightEnemies.Add(chaussette); List <Enemy> bottomEnemies = new List <Enemy>(); bottomEnemies.Add(meduse); bottomEnemies.Add(calmar); bottomEnemies.Add(roquin); //save borders paramas as a whole object FrustumBorder left = new FrustumBorder(bottomLeft, topLeft, cam, leftEnemies, player, 0, .22f); FrustumBorder top = new FrustumBorder(topLeft, topRight, cam, topEnemies, player, 0, .66f); FrustumBorder right = new FrustumBorder(bottomright, topRight, cam, rightEnemies, player, 0, .22f); FrustumBorder bottom = new FrustumBorder(bottomright, bottomLeft, cam, bottomEnemies, player, 0, .66f); frustumBorders.Add(left); frustumBorders.Add(top); frustumBorders.Add(right); frustumBorders.Add(bottom); _ActiveBorders.Add(left); _ActiveBorders.Add(top); _ActiveBorders.Add(right); _ActiveBorders.Add(bottom); }
public void SpawnRandomEnemy() { if (frustumBorders.Count == 0) { InitiateSpawner(); } int randIndex = Random.Range(0, _ActiveBorders.Count); FrustumBorder randomBorder = _ActiveBorders[randIndex]; _ActiveBorders.Remove(randomBorder); _InactiveBorders.Enqueue(randomBorder); if (_InactiveBorders.Count > frustumBorders.Count / 2) { _ActiveBorders.Add(_InactiveBorders.Dequeue()); } randomBorder.Spawn(depthFromCam); }