예제 #1
0
 private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
 {
     for (int i = 0; i < waveConfig.GetNumberOfEnemies(); i++)
     {
         var newEnemy = Instantiate(
             waveConfig.GetEnemyPrefab(),
             waveConfig.GetWaypoints()[0].transform.position,
             Quaternion.identity
             );
         newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);
         yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
     }
 }
예제 #2
0
 private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
 {
     for (int enemyCount = 0; enemyCount < waveConfig.GetEnemyNumber(); enemyCount++)
     {
         //each enemy created will be stored to new enemy
         var newEnemy =
             Instantiate(
                 waveConfig.GetEnemyPrefab(), waveConfig.GetWaypoints()[0].transform.position, Quaternion.identity);
         //pass in the waveconfig in this script to EnemyPathing
         newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);
         yield return(new WaitForSeconds(waveConfig.GetTimeBtwnSpawns()));
     }
 }
 private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
 {
     for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
     {
         var newEnemy = Instantiate(
             waveConfig.GetEnemyPrefab(),
             waveConfig.GetWaypoints()[0].transform.position,
             Quaternion.identity);
         newEnemy.transform.SetParent(GameObject.FindGameObjectWithTag("EnemyArea").transform, false);
         newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);
         yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
     }
 }
 private IEnumerator SpawnAllEnemiesInWave(WaveConfig currentWave)
 {
     for (int enemyCount = 0; enemyCount < currentWave.GetNumberOfEnemies(); enemyCount++)
     {
         var newEnemy = Instantiate(
             currentWave.GetEnemyPrefab(),
             currentWave.GetWaypoints()[0].transform.position,
             Quaternion.identity
             );
         newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(currentWave);
         yield return(new WaitForSeconds(currentWave.GetTimeBetweenSpawns()));
     }
 }
예제 #5
0
    // Coroutine that spawns all enemies in a single wave
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
    {
        for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
        {
            // Spawns an enemy
            var newEnemyWave = Instantiate(waveConfig.GetEnemyPrefab(), waveConfig.GetWaypoints()[0].transform.position, Quaternion.identity);

            // Make it follow it's wave path
            newEnemyWave.GetComponent <Pathing>().SetWaveConfig(waveConfig);

            // Wait it's wave TimeBetweenSpawns to spawn another enemy in the same wave
            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
        }
    }
    IEnumerator SpawnAllWaves()
    {
        //using a for loop to go through all of the waves found in our list
        for (int waveIndex = startingWave; waveIndex < waveConfigs.Count; waveIndex++)
        {
            WaveConfig currentWave = waveConfigs[waveIndex];

            /* Calling a StartCoroutine from yield return would ensure synchronous running of the execution
             * of multiple calls for the SpawnAllEnemiesInWave. Without this synchronous concept, all
             * of the groups would be generated together.
             */
            yield return(StartCoroutine(SpawnAllEnemiesInWave(currentWave)));
        }
    }
    private void SpawnCluster(WaveConfig waveConfig)
    {
        //spawns all enemies in the wave at once in a circular cluster shape
        for (int i = 0; i < waveConfig.NumberOfEnemies(); i++)
        {
            //Get a random normalized direction so that the cluster shape is circular instead of a square.
            var randomLocation = new Vector3(UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f)).normalized;

            //Get random radius from 0 to the max radius in the waveconfig. this will make the enemies spawn anywhere within the max radius.
            var spawnLocation = spawnPoints[waveConfig.SpawnPoint()].transform.position + randomLocation * UnityEngine.Random.Range(0, waveConfig.ClusterRadius());

            Instantiate(waveConfig.EnemyPrefab(), spawnLocation, waveConfig.EnemyPrefab().transform.rotation);
        }
    }
예제 #8
0
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
    {
        for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
        {
            GameObject enemyObject = Instantiate(
                waveConfig.GetEnemyPrefab(),
                waveConfig.GetWaypoints()[enemyCount].transform.position,
                Quaternion.identity
                );
            enemyObject.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);

            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
        }
    }
예제 #9
0
    //This Coroutine spawns all of the enemies in the wave that it is passed
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
    {
        for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
        {
            //Creates an instances of the enemy based on the parameters passed.
            var newEnemy = Instantiate(waveConfig.GetEnemyPrefab(), waveConfig.GetWayPoints()[0].transform.position, Quaternion.identity);

            //Sets the wave config in EnemyPathing.cs
            newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);

            //Yields based on the time between spawns in the waveconfig
            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
        }
    }
예제 #10
0
    private IEnumerator SpawnWaveEnemies(WaveConfig theConfig)
    {
        for (int i = 0; i < theConfig.GetNumberOfSpawns(); i++)
        {
            var currentEnemy = Instantiate(theConfig.GetEnemyPrefab(),
                                           theConfig.GetPathWaypoints()[0].transform.position,
                                           Quaternion.identity);
            //this way we control wave settings in the waveconfigs (Assets/Waves/waveconfigs)
            //rather than variables in the scripts.
            currentEnemy.GetComponent <EnemyPathing>().SetWaveConfig(theConfig);

            yield return(new WaitForSeconds(theConfig.GetTimeBetweenSpawn()));
        }
    }
예제 #11
0
    private IEnumerator SpawnWaveEnemies(WaveConfig waveConfig)
    {
        for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
        {
            var newEnemy = Instantiate(
                waveConfig.GetEnemyPrefab(),
                waveConfig.GetWaypoints()[0].position,
                Quaternion.Euler(0, 0, 180));

            newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);

            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
        }
    }
예제 #12
0
    private IEnumerator LaunchWaves()
    {
        for (int i = levelConfigs[currentLevelIndex].startingWaveIndex; i < waveConfigs.Length; i++)
        {
            var waveConfig = waveConfigs[i];
            currentWaveConfig = waveConfig;
            ++WaveNumber;
            StartCoroutine(nameof(LaunchWave));
            ChangeListener(new WaveStarted());
            yield return(new WaitForSeconds(levelConfigs[currentLevelIndex].secondsBetweenWaves + waveConfig.numEnemies * waveConfig.secondsBetweenEnemies));
        }

        StartCoroutine(nameof(EndWhenAllEnemiesAreGone));
    }
예제 #13
0
    // Start is called before the first frame update
    private IEnumerator SpawnAllEnemyInWave(WaveConfig waveConfig, int waveIndex)
    {
        for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
        {
            var newEnemy = Instantiate(waveConfig.GetEnemyPrefab(),
                                       waveConfig.GetWaypoints()[startingWave].transform.position,
                                       Quaternion.identity);
            newEnemy.GetComponent <EnemyPath>().SetWaveConfig(waveConfig);
            Enemy targetEnemy = newEnemy.GetComponent <Enemy>();
            patternController.AddToCollection(enemyCount, waveIndex, targetEnemy);

            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpwan()));
        }
    }
예제 #14
0
    }   // IEnumerator SpawnAllWaves()

    /***
    *		This coroutine spawns all enemies in a wave.	
    ***/
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
    {
        Debug.Log("Starting wave " + waveConfig.name);
        waveConfig.BuildShips();
        for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
        {
            Debug.Log("Spawning enemy #" + enemyCount + " for " + waveConfig.name);
            var newEnemy = waveConfig.GetEnemyShip(enemyCount);
            newEnemy.transform.position = waveConfig.GetWaypoints()[0].transform.position;
            newEnemy.GetComponent<EnemyPathing>().SetWaveConfig(waveConfig);
            level.AddEnemy();
            yield return new WaitForSeconds(waveConfig.GetTimeBetweenSpawns());
        }   // for
    }   // IEnumerator SpawnAllEnemiesInWave()
예제 #15
0
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveToSpawn)
    {
        for (int obstacleCount = 1; obstacleCount <= waveToSpawn.GetNoOfObstacles(); obstacleCount++)
        {
            var newObst = Instantiate(
                waveToSpawn.GetObstaclePrefab(),
                waveToSpawn.GetWaypointsList()[0].transform.position,
                Quaternion.identity) as GameObject;

            newObst.GetComponent <ObstaclePathing>().SetWaveConfig(waveToSpawn);

            yield return(new WaitForSeconds(waveToSpawn.GetTimeBetweenSpawns()));
        }
    }
예제 #16
0
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig currentWave)
    {
        for (int i = 0; i < currentWave.NumberOfEnemies; i++)
        {
            var newEnemy = Instantiate(
                currentWave.EnemyPrefab,
                currentWave.GetPathWaypoints().First().transform.position,
                Quaternion.identity);

            newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(currentWave);

            yield return(new WaitForSeconds(currentWave.TimeBetweenSpawns));
        }
    }
예제 #17
0
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
    {
        for (int index = 0; index < waveConfig.GetNumberOfEnemies(); ++index)
        {
            var newEnemy = Instantiate(waveConfig.GetEnemyPrefab(),
                                       waveConfig.GetWaypoints()[0].position,
                                       Quaternion.identity);

            newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);

            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns() +
                                            Random.Range(0, waveConfig.GetSpawnRandomFactor())));
        }
    }
예제 #18
0
 private void waveEndStuff()
 {
     if (waves.Count > currentWaveIndex + 1)
     {
         previousWave = currentWave;
         currentWaveIndex++;
         currentWave = waves[currentWaveIndex];
         phase       = SpawnPhase.Spawning;
     }
     else
     {
         //end
     }
 }
예제 #19
0
    /*
     * Coroutine that spwns all the enemy in a wave
     */
    private IEnumerator SpawnAllEnemyInWave(WaveConfig waveConfig)
    {
        for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
        {
            //object to instantiate, position and rotation
            var newEnemy = Instantiate(waveConfig.GetEnemyPrefab(),
                                       waveConfig.GetWayPoints()[0].transform.position,
                                       Quaternion.identity);

            newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);

            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
        }
    }
예제 #20
0
    IEnumerator spawnAllWaveEnemies(WaveConfig waveConfig)
    {
        var numOfEnemies = waveConfig.getNumOfenemies();

        for (int i = 0; i < numOfEnemies; ++i)
        {
            List <Transform> wayPoints = waveConfig.getWayPoints();
            var newEnemy = Instantiate(waveConfig.getEnemyPrefab(),
                                       new Vector3(),
                                       Quaternion.Euler(0, 0, 270));
            newEnemy.GetComponent <EnemyPathing>().setWaveConfig(waveConfig);
            yield return(new WaitForSeconds(waveConfig.gettimeBetweenSpawns()));
        }
    }
예제 #21
0
    private IEnumerator SpawnAllObjectsInWave(WaveConfig waveToSpawn)
    {
        for (int objectCount = 1; objectCount <= waveToSpawn.GetNumberOfObstacles(); objectCount++)
        {
            var newEnemy = Instantiate(
                waveToSpawn.GetEnemyPrefab(),
                waveToSpawn.GetWaypoints()[0].transform.position,
                Quaternion.identity);

            newEnemy.GetComponent <ObstaclePathing>().SetWaveConfig(waveToSpawn);

            yield return(new WaitForSeconds(waveToSpawn.GetTimeBetweenSpawns()));
        }
    }
예제 #22
0
    private IEnumerator SpawnAllEnemies(WaveConfig waveConfig)
    {
        for (var enemycount = 0; enemycount < waveConfig.GetNumberOfEnemies(); enemycount++)
        {
            var newEnemy = Instantiate(
                waveConfig.GetEnemyPrefab(),
                waveConfig.GetWaypoints()[0].transform.position,
                waveConfig.GetEnemyPrefab().transform.rotation
                );
            Debug.Log(newEnemy.transform.rotation);

            newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);
            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
        }
    }
예제 #23
0
    private IEnumerator SpawnWaveEnemies(WaveConfig currWave)
    {
        for (var i = 0; i < currWave.GetNumberOfEnemies(); i++)
        {
            var newEnemy = Instantiate
                           (
                currWave.GetEnemyPrefab(),
                currWave.GetWaypoints()[0].transform.position,
                currWave.GetEnemyPrefab().transform.rotation
                           );

            newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(currWave);
            yield return(new WaitForSeconds(currWave.GetTimeBetweenSpawns()));
        }
    }
예제 #24
0
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig wave)
    {
        for (int i = 0; i < wave.enemyQuantity; i++)
        {
            var enemy = Instantiate(
                wave.EnemyPrefab,
                wave.WaveWaypoints[0].transform.position,
                Quaternion.identity
                );

            enemy.GetComponent <EnemyPathing>().SetWaveConfig(wave);

            yield return(new WaitForSeconds(wave.timeBetweenSpawns));
        }
    }
예제 #25
0
    private IEnumerator SpawnAllEnemies(WaveConfig waveConfig)
    {
        int numberOfEnemy = waveConfig.GetEnemyNumber();

        for (int enemyCount = 1; enemyCount <= numberOfEnemy; enemyCount++)
        {
            var enemy = Instantiate(
                waveConfig.GetEnemyPrefab(),
                waveConfig.GetWaypoints()[0].transform.position,
                Quaternion.identity
                );
            enemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);
            yield return(new WaitForSeconds(Random.Range(waveConfig.GetSpawnInterval(), waveConfig.GetRandomer())));
        }
    }
예제 #26
0
    private IEnumerator SpawnEnemies(WaveConfig waveConfig)
    {
        yield return(new WaitForSeconds(waveConfig.GetStartSpawningTime()));

        for (int i = 0; i < waveConfig.GetNumberOfEnemies(); i++)
        {
            var enemy = Instantiate(waveConfig.GetEnemyPrefab(),
                                    waveConfig.GetWaypoints()[0].transform.position,
                                    Quaternion.Euler(0, 0, 90));

            enemy.GetComponent <EnemyPath>().SetWaveConfig(waveConfig);

            yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
        }
    }
예제 #27
0
    /// <summary>
    /// Coroutine called to spawn all the enemies in a given wave
    /// </summary>
    /// <param name="waveConfig">The wave configuration containing the enemy data</param>
    /// <returns></returns>
    private IEnumerator SpawnEnemiesInWave(WaveConfig waveConfig)
    {
        for (int i = 0; i < waveConfig.EnemyCount; i++)
        {
            // Instantiate a new enemy
            var newEnemy = Instantiate(original: waveConfig.EnemyPrefab,
                                       position: waveConfig.GetWaypoints()[0].transform.position,
                                       rotation: Quaternion.identity);

            // Get the script component of the newly instantiated enemy and associate the wave config with it
            newEnemy.GetComponent <EnemyPathing>().WaveConfig = waveConfig;

            yield return(new WaitForSeconds(waveConfig.SpawnSpeed));
        }
    }
예제 #28
0
 public IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
 {
     for (int enemyCount = 0; enemyCount < waveConfig.GetNumberOfEnemies(); enemyCount++)
     {
         if (FindObjectOfType <Boss>().BossAlive() == true)
         {
             var newEnemy = Instantiate(
                 waveConfig.GetEnemyPrefab(),
                 GameObject.Find("Boss").transform.position,
                 Quaternion.identity);
             newEnemy.GetComponent <EnemyPathing>().SetWaveConfig(waveConfig);
             yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
         }
     }
 }
    private IEnumerator SpawnAllEnemiesInWave(WaveConfig waveConfig)
    {
        for (int enemyCount = startingWave; enemyCount < waveConfig.NumberOfEnemies; enemyCount++)
        {
            var newEnemy = Instantiate(
                waveConfig.EnemyPrefab,
                waveConfig.GetWaypoints()[0].transform.position,
                Quaternion.identity
                );
            newEnemy.GetComponent <EnemyPathing>().WaveConfig = waveConfig;
            yield return(new WaitForSeconds(waveConfig.TimeBetweenSpawns));
        }

        yield return(new WaitForSeconds(delayBetweenWaves));
    }
예제 #30
0
    private IEnumerator SpawnEnemies(WaveConfig currentWave)
    {
        for (int i = 0; i < currentWave.GetNumberOfEnemies(); i++)
        {
            GameObject enemy = Instantiate(
                currentWave.GetEnemyPrefab(),
                currentWave.GetWaypoints()[0].position,
                Quaternion.identity
                );

            enemy.GetComponent <EnemyPathing>().SetWaveConfig(currentWave);

            yield return(new WaitForSeconds(currentWave.GetSpawnCooldown()));
        }
    }