using System.Collections; using System.Collections.Generic; using UnityEngine; public class Spawner : MonoBehaviour { [System.Serializable] public struct SpawnableObject { public GameObject prefab; [Range(0f, 1f)] public float spawnChance; } public SpawnableObject[] objects; public float minSpawnRate = 1f; public float maxSpawnrate = 2f; private void OnEnable() { Invoke(nameof(Spawn), Random.Range(minSpawnRate, maxSpawnrate)); } private void OnDisable() { CancelInvoke(); } private void Spawn() { float spawnChance = Random.value; foreach (var obj in objects) { if (spawnChance < obj.spawnChance) { GameObject obstacle = Instantiate(obj.prefab); obstacle.transform.position += transform.position; break; } spawnChance -= obj.spawnChance; } Invoke(nameof(Spawn), Random.Range(minSpawnRate, maxSpawnrate) * Mathf.Clamp(100f/ GameManager.timeElapsed,0.3f,1)); } }