diff --git a/Assets/Scripts/ZombieSpawnerLogic.cs b/Assets/Scripts/ZombieSpawnerLogic.cs index 512c8f2..05df948 100644 --- a/Assets/Scripts/ZombieSpawnerLogic.cs +++ b/Assets/Scripts/ZombieSpawnerLogic.cs @@ -4,15 +4,18 @@ using UnityEngine; public class ZombieSpawnerLogic : MonoBehaviour { public GameObject Prefab; - public byte CooldownSeconds = 5; + public byte MinCooldownSeconds = 5; + public byte MaxCooldownSeconds = 30; public byte MaxSpawns = 5; + private float _currentSpawnDelay; private float _lastSpawn; private readonly List _spawns = new(); void Start() { _lastSpawn = Time.time; + PickNewSpawnDelay(); } void FixedUpdate() @@ -21,9 +24,15 @@ public class ZombieSpawnerLogic : MonoBehaviour AttemptZombieSpawn(); } + private void PickNewSpawnDelay() + { + _currentSpawnDelay = Random.Range(MinCooldownSeconds, MaxCooldownSeconds); + Debug.Log($"Zombie spawner new spawn delay: {_currentSpawnDelay}s"); + } + private void AttemptZombieSpawn() { - if (Time.time - _lastSpawn < CooldownSeconds) + if (Time.time - _lastSpawn < _currentSpawnDelay) { return; } @@ -38,6 +47,7 @@ public class ZombieSpawnerLogic : MonoBehaviour var newZombie = Instantiate(Prefab, transform); _spawns.Add(newZombie); _lastSpawn = Time.time; + PickNewSpawnDelay(); } private void RemoveDestroyedZombies() => _spawns.RemoveAll(zombie => zombie == null); diff --git a/README.md b/README.md index b82004f..f632098 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Unity version: `6000.3.13f1` (LTS) - [ ] Menu/UI - [ ] Hudba počas hrania - [ ] Viac spawnerov -- [ ] Inteligentnejší spawner +- [x] Inteligentnejší spawner - randomizácia delayu medzi spawnmi - [ ] Obmedzenie priestoru aby sa nedalo dostať von z mapy (neni nutné) - [x] Opraviť opakujúciú "Die" animáciu keď sa spamuje strielanie zombíka