Zombies machen mehr geräsche und andere tolle sachen und laufen zum spieler
This commit is contained in:
@ -13,32 +13,52 @@ public class ZombieSpawner : MonoBehaviour
|
||||
GameObject ZombiePrefab;
|
||||
[SerializeField]
|
||||
private float _spawnRate = 2.0f;
|
||||
[SerializeField]
|
||||
private float _dontSpawnForLastSeconds = 3.0f;
|
||||
[SerializeField, ShowOnly]
|
||||
private float _spawnTimer;
|
||||
[SerializeField, ShowOnly]
|
||||
private float _enabledTimer = 0.0f;
|
||||
|
||||
private float _secondsPerAliveTime;
|
||||
private bool _startedFading = false;
|
||||
|
||||
// Start wird aufgerufen, bevor das erste Frame gezeichnet wird
|
||||
void Start()
|
||||
{
|
||||
_secondsPerAliveTime = GetComponentInParent<Zeitschaltuhr>().ActiveTimeSpanInSeconds;
|
||||
// letzte _dontSpawnForLastSeconds sekunden keine Zombies mehr spawnen
|
||||
_secondsPerAliveTime = GetComponentInParent<Zeitschaltuhr>().ActiveTimeSpanInSeconds - _dontSpawnForLastSeconds;
|
||||
_spawnTimer = Random.Range(0.5f * _secondsPerAliveTime / _spawnRate, _secondsPerAliveTime / _spawnRate);
|
||||
_enabledTimer = _secondsPerAliveTime + _dontSpawnForLastSeconds;
|
||||
}
|
||||
|
||||
// Update wird einmal pro Frame aufgerufen
|
||||
void Update()
|
||||
{
|
||||
_enabledTimer -= Time.deltaTime;
|
||||
_spawnTimer -= Time.deltaTime;
|
||||
|
||||
// als <20>bergang von Schrei zu Tr<54>te
|
||||
if (_enabledTimer < _dontSpawnForLastSeconds && !_startedFading)
|
||||
{
|
||||
_startedFading = true;
|
||||
FadeOutNoises();
|
||||
}
|
||||
|
||||
if (_spawnTimer <= 0)
|
||||
{
|
||||
SpawnZombie();
|
||||
_spawnTimer = _secondsPerAliveTime / _spawnRate;
|
||||
_spawnTimer = (_secondsPerAliveTime - _dontSpawnForLastSeconds) / _spawnRate;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
if (_secondsPerAliveTime > 0)
|
||||
{
|
||||
_enabledTimer = _secondsPerAliveTime;
|
||||
_startedFading = false;
|
||||
}
|
||||
if (GameManager.Instance != null)
|
||||
{
|
||||
if (GameManager.Instance.ContextBuffer != null)
|
||||
@ -55,8 +75,18 @@ public class ZombieSpawner : MonoBehaviour
|
||||
|
||||
}
|
||||
|
||||
private void FadeOutNoises()
|
||||
{
|
||||
for (int i = 0; i < transform.childCount; i++)
|
||||
{
|
||||
GameObject zombie = transform.GetChild(i).gameObject;
|
||||
zombie.GetComponent<Zombie>().FadeOutNoise();
|
||||
}
|
||||
}
|
||||
|
||||
private void SpawnZombie()
|
||||
{
|
||||
if (transform.childCount > _spawnRate) return;
|
||||
Transform pos = SpawnPoints[Random.Range(0, SpawnPoints.Count)];
|
||||
Instantiate(ZombiePrefab, pos.position, Quaternion.identity, transform);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user