diff --git a/3d Prototyp/Assets/Scenes/GameLoopTest.unity b/3d Prototyp/Assets/Scenes/GameLoopTest.unity
index ae47c011..d3a19376 100644
--- a/3d Prototyp/Assets/Scenes/GameLoopTest.unity
+++ b/3d Prototyp/Assets/Scenes/GameLoopTest.unity
@@ -427,7 +427,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_daysUntilRelease: 20
- _secondsPerDay: 30
+ _secondsPerDay: 20
_totalTime: 0
_sun: {fileID: 179279866}
--- !u!4 &227416519
@@ -461,7 +461,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &266099154
Transform:
m_ObjectHideFlags: 0
@@ -490,7 +490,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
ZombiePrefab: {fileID: 856601670117699726, guid: a34b2d22562c7214f9daf0d3dea8d85c, type: 3}
- _spawnRate: 10
+ _spawnRate: 2
_spawnTimer: 0
--- !u!1001 &514859708
PrefabInstance:
diff --git a/3d Prototyp/Assets/Scripts/Zeitschaltuhr.cs b/3d Prototyp/Assets/Scripts/Zeitschaltuhr.cs
index 2a7aed0f..67f43e76 100644
--- a/3d Prototyp/Assets/Scripts/Zeitschaltuhr.cs
+++ b/3d Prototyp/Assets/Scripts/Zeitschaltuhr.cs
@@ -11,9 +11,17 @@ public class Zeitschaltuhr : MonoBehaviour, ISerializationCallbackReceiver
{
private TimeSpan _turnOnTimeSpan;
private TimeSpan _turnOffTimeSpan;
-
+ private float _activeTimeSpanInSeconds;
+
+ ///
+ /// Die Dauer der Active-Time der Kinder in echten Sekunden
+ ///
+ public float ActiveTimeSpanInSeconds => _activeTimeSpanInSeconds;
+ ///
+ /// Ob die Kinder gerade aktiv sind oder nicht
+ ///
public bool IsOn;
-
+
[SerializeField] private SimpleTime _turnOnTime;
[SerializeField] private SimpleTime _turnOffTime;
@@ -39,6 +47,7 @@ public class Zeitschaltuhr : MonoBehaviour, ISerializationCallbackReceiver
void Start()
{
+ CalculateOnTimeInSeconds();
UpdateOn();
}
@@ -94,4 +103,23 @@ public class Zeitschaltuhr : MonoBehaviour, ISerializationCallbackReceiver
_turnOnTimeSpan = _turnOnTime.ToTimeSpan();
_turnOffTimeSpan = _turnOffTime.ToTimeSpan();
}
+
+ private void CalculateOnTimeInSeconds()
+ {
+ TimeSpan turnOnTimeSpan = _turnOnTime.ToTimeSpan();
+ TimeSpan turnOffTimeSpan = _turnOffTime.ToTimeSpan();
+
+ float onDurationInSeconds;
+ if (turnOnTimeSpan < turnOffTimeSpan)
+ {
+ onDurationInSeconds = (float)(turnOffTimeSpan - turnOnTimeSpan).TotalSeconds;
+ }
+ else
+ {
+ TimeSpan fullDay = TimeSpan.FromHours(24);
+ onDurationInSeconds = (float)((fullDay - turnOnTimeSpan) + turnOffTimeSpan).TotalSeconds;
+ }
+
+ _activeTimeSpanInSeconds = onDurationInSeconds * ((float)TimeManager.Instance.SecondsPerDay / 86400f); // 86400 Sekunden pro Tag
+ }
}
diff --git a/3d Prototyp/Assets/Scripts/ZombieSpawner.cs b/3d Prototyp/Assets/Scripts/ZombieSpawner.cs
index 611c661d..1640d3ff 100644
--- a/3d Prototyp/Assets/Scripts/ZombieSpawner.cs
+++ b/3d Prototyp/Assets/Scripts/ZombieSpawner.cs
@@ -8,17 +8,17 @@ public class ZombieSpawner : MonoBehaviour
[SerializeField]
GameObject ZombiePrefab;
[SerializeField]
- private float _spawnRate = 1.0f;
+ private float _spawnRate = 2.0f;
[SerializeField, ShowOnly]
private float _spawnTimer;
- private float _secondsPerDay;
+ private float _secondsPerAliveTime;
// Start wird aufgerufen, bevor das erste Frame gezeichnet wird
void Start()
{
- _secondsPerDay = (float)TimeManager.Instance.SecondsPerDay;
- _spawnTimer = _secondsPerDay / _spawnRate;
+ _secondsPerAliveTime = GetComponentInParent().ActiveTimeSpanInSeconds;
+ _spawnTimer = Random.Range(0.5f * _secondsPerAliveTime / _spawnRate, _secondsPerAliveTime / _spawnRate);
}
// Update wird einmal pro Frame aufgerufen
@@ -29,7 +29,7 @@ public class ZombieSpawner : MonoBehaviour
if (_spawnTimer <= 0)
{
Instantiate(ZombiePrefab, transform.position, Quaternion.identity, transform);
- _spawnTimer = _secondsPerDay / _spawnRate;
+ _spawnTimer = _secondsPerAliveTime / _spawnRate;
}
}
@@ -49,7 +49,12 @@ public class ZombieSpawner : MonoBehaviour
// Destroy all children (zombies)
for (int i = 0; i < transform.childCount; i++)
{
- Destroy(transform.GetChild(i).gameObject);
+ KillZombiesByDisable();
}
}
+
+ private void KillZombiesByDisable()
+ {
+ Destroy(transform.GetChild(i).gameObject);
+ }
}