using System.Collections; using System.Collections.Generic; using UnityEngine; public class spawner : MonoBehaviour { public GameObject childPrefab; public int startingAmount = 100; private Dictionary babyCombos = new Dictionary(); public Collider[] spawnVolumes; void Start() { for (int x = 0; x < startingAmount; x++) { SpawnBaby(); } } public void SpawnBaby() { Vector3 _spawnPoint = RandomPointInBounds(spawnVolumes[Random.Range(0, spawnVolumes.Length)].bounds); _spawnPoint.y = 2.5f; var _newChild = Instantiate(childPrefab, _spawnPoint, Quaternion.identity); _newChild.transform.parent = this.transform; Randomizer _randomizer = _newChild.GetComponent(); bool _validChoice = false; while (!_validChoice) { int a, b, c, d, e, f; a = Random.Range(0, _randomizer.bases.Length); b = Random.Range(0, _randomizer.hats.Length); c = Random.Range(0, _randomizer.eyes.Length); d = Random.Range(0, _randomizer.faces.Length); e = Random.Range(0, _randomizer.tops.Length); f = Random.Range(0, _randomizer.bottoms.Length); string _combination = a.ToString() + b.ToString() + c.ToString() + d.ToString() + e.ToString() + f.ToString(); if (!babyCombos.ContainsKey(_combination)) { _randomizer.RandomizeParts(a, b, c, d, e, f); babyCombos.Add(_combination, true); _validChoice = true; } } } public static Vector3 RandomPointInBounds(Bounds bounds) { return new Vector3( Random.Range(bounds.min.x, bounds.max.x), Random.Range(bounds.min.y, bounds.max.y), Random.Range(bounds.min.z, bounds.max.z) ); } }