randomize delay between zombie spawns

This commit is contained in:
2026-05-05 11:43:15 +02:00
parent 38b1456c7e
commit 1e35195ab8
2 changed files with 13 additions and 3 deletions
+12 -2
View File
@@ -4,15 +4,18 @@ using UnityEngine;
public class ZombieSpawnerLogic : MonoBehaviour public class ZombieSpawnerLogic : MonoBehaviour
{ {
public GameObject Prefab; public GameObject Prefab;
public byte CooldownSeconds = 5; public byte MinCooldownSeconds = 5;
public byte MaxCooldownSeconds = 30;
public byte MaxSpawns = 5; public byte MaxSpawns = 5;
private float _currentSpawnDelay;
private float _lastSpawn; private float _lastSpawn;
private readonly List<GameObject> _spawns = new(); private readonly List<GameObject> _spawns = new();
void Start() void Start()
{ {
_lastSpawn = Time.time; _lastSpawn = Time.time;
PickNewSpawnDelay();
} }
void FixedUpdate() void FixedUpdate()
@@ -21,9 +24,15 @@ public class ZombieSpawnerLogic : MonoBehaviour
AttemptZombieSpawn(); AttemptZombieSpawn();
} }
private void PickNewSpawnDelay()
{
_currentSpawnDelay = Random.Range(MinCooldownSeconds, MaxCooldownSeconds);
Debug.Log($"Zombie spawner new spawn delay: {_currentSpawnDelay}s");
}
private void AttemptZombieSpawn() private void AttemptZombieSpawn()
{ {
if (Time.time - _lastSpawn < CooldownSeconds) if (Time.time - _lastSpawn < _currentSpawnDelay)
{ {
return; return;
} }
@@ -38,6 +47,7 @@ public class ZombieSpawnerLogic : MonoBehaviour
var newZombie = Instantiate(Prefab, transform); var newZombie = Instantiate(Prefab, transform);
_spawns.Add(newZombie); _spawns.Add(newZombie);
_lastSpawn = Time.time; _lastSpawn = Time.time;
PickNewSpawnDelay();
} }
private void RemoveDestroyedZombies() => _spawns.RemoveAll(zombie => zombie == null); private void RemoveDestroyedZombies() => _spawns.RemoveAll(zombie => zombie == null);
+1 -1
View File
@@ -9,7 +9,7 @@ Unity version: `6000.3.13f1` (LTS)
- [ ] Menu/UI - [ ] Menu/UI
- [ ] Hudba počas hrania - [ ] Hudba počas hrania
- [ ] Viac spawnerov - [ ] Viac spawnerov
- [ ] Inteligentnejší spawner - [x] Inteligentnejší spawner
- randomizácia delayu medzi spawnmi - randomizácia delayu medzi spawnmi
- [ ] Obmedzenie priestoru aby sa nedalo dostať von z mapy (neni nutné) - [ ] Obmedzenie priestoru aby sa nedalo dostať von z mapy (neni nutné)
- [x] Opraviť opakujúciú "Die" animáciu keď sa spamuje strielanie zombíka - [x] Opraviť opakujúciú "Die" animáciu keď sa spamuje strielanie zombíka