You've already forked zumbi-game
randomize delay between zombie spawns
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user