Ejemplo n.º 1
0
    private void FixedUpdate()
    {
        if (!started)
        {
            return;
        }

        if (wait)
        {
            //Debug.Log("Waiting to start spawning");
            if (Time.fixedTime - waitingStarted > currentBatch.waitTime)
            {
                wait = false;
            }
        }
        else if (enemiesSpawned < currentBatch.enemyCount)
        {
            //Debug.Log("Spawning now " + Time.fixedTime);
            if (Time.fixedTime - lastSpawned > currentBatch.spawnTime)
            {
                GameObject      enemy = pool.ActivateObject(spawnPoint.position);
                EnemyNavigation nav   = enemy.GetComponent <EnemyNavigation>();
                Goblin          gob   = enemy.GetComponent <Goblin>();

                if (nav != null)
                {
                    nav.SetTarget(baseTower);
                }

                if (gob != null)
                {
                    gob.Initialize();
                }

                lastSpawned = Time.fixedTime;
                enemiesSpawned++;
            }
        }
        else
        {
            currentBatchIndex++;
            if (wave.batches.Count > currentBatchIndex)
            {
                currentBatch = wave.batches[currentBatchIndex];
                GameObject prefab = enemyConfig.Enemies.Where(x => x.type == currentBatch.enemyType).First().prefab;
                pool           = ObjectPooler.GetPool(prefab);
                wait           = true;
                waitingStarted = Time.fixedTime;
                enemiesSpawned = 0;
            }
            else
            {
                started = false;
            }
        }
    }