Timer is not counting down. Staying at original number.

Hello, I’m trying to get an Alien to spawn after 20 seconds, if an Alien doesn’t already exist.

The code is:

using UnityEngine;
using System.Collections;

public class AlienSpawn : MonoBehaviour
{

public GameObject Alien;
public float  AlienSpawnTimer = 20f;

private float alienSpawnTimer;

// Use this for initialization
void Start ()
{
    alienSpawnTimer = AlienSpawnTimer;
}

void Update()
{
    if (Alien == null)
    {
        alienSpawnTimer -= Time.deltaTime;
    }

    Debug.Log(alienSpawnTimer);

    if(alienSpawnTimer < 0)
    {
        Instantiate(Alien);
        alienSpawnTimer = AlienSpawnTimer;
    }
}

}

The problem is that the timer just keeps outputting “20” over and over again.

If anyone could help with this, I would be grateful.

Thanks!

Okay I see your problem. Try this…

public GameObject Alien;
GameObject ActiveAlien;

 public float  AlienSpawnTimer = 20f;
 private float alienSpawnTimer;
 // Use this for initialization
 void Start ()
 {
     alienSpawnTimer = AlienSpawnTimer;
 }
 void Update()
 {
     if (ActiveAlien == null)
     {
         alienSpawnTimer -= Time.deltaTime;
     }
     Debug.Log(alienSpawnTimer);
     if(alienSpawnTimer < 0)
     {
         GameObject alien = Instantiate(Alien);
         ActiveAlien = alien;
         alienSpawnTimer = AlienSpawnTimer;
     }
 }

The problem was that your Alien variable is what you set your prefab to. So it wasn’t null, since that’s your prefab. Instead, you set a variable for the currently active alien which you set when you instantiate the alien, and check if that is null.