- Home /
Question by
TheIncognito · May 12, 2014 at 08:06 AM ·
c#timerround
Round Timer: Time.smoothDeltaTime stops the clock...
using UnityEngine;
using System.Collections;
public class EnemySpawn : MonoBehaviour {
public float timeLeft = 300f;
public float roundPause = 60f;
int numEnemies = 100;
public GameObject enemies;
GameObject spawnEnemy;
Vector3 pos;
// Use this for initialization
void Start () {
}
void newRound() {
for(int i = 0; i < numEnemies; i++) {
pos = new Vector3(Random.Range (-200, 200), 20, Random.Range (-200, 200));
spawnEnemy = Instantiate(enemies, pos, Quaternion.identity)as GameObject;
}
}
void OnGUI() {
GUILayout.TextArea ("" + roundPause);
}
// Update is called once per frame
void Update () {
if (timeLeft >= 0) {
timeLeft -= Time.smoothDeltaTime;
}
if (timeLeft <= 0) {
timeLeft = 0f;
roundPause = 60f;
}
if (roundPause >= 0) {
roundPause -= Time.smoothDeltaTime;
}
if (roundPause <= 0) {
newRound();
roundPause = 0f;
timeLeft = 300f;
}
}
}
How it works:
You have a 5 minute round, when the round begins, 100 enemies spawn in. after the 5 Minutes are up, you have a 1 minute intermission (Will probably drop to 30 seconds.) But when I'm lowering the time for the float roundPause, it stops at 59.9843 seconds.
Comment
Best Answer
Answer by TheIncognito · May 12, 2014 at 08:30 AM
Solved my Problem,
if(roundPause <= 0) {
//it still senses as 0
}
if(timeLeft <= 0) {
//it still senses as 0
}
I have to use > or <, instead of >= or <=
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
For loop resetting itself, but needs to stop 2 Answers
Timescale not affect timer? (C#) 2 Answers
Countdown timer into text c# 1 Answer