IEnumerator SpawnEnemy()
    {
        if (waveIndex > wave.NumOfElements() - 1) // If the end of the list was reached: Destroy myself.
        {
            if (!loop)
            {
                Destroy(gameObject);
            }
            else
            {
                trigger    = false;
                waveIndex  = 0;
                enemyCount = 1;
            }
        }
        canSpawn = false;
        enemyCount++; // Count number of the spawned enemies
        do
        {
            bufferVector.Set(Random.Range(bottomL.x, topR.x), 0, Random.Range(bottomL.z, topR.z));
            bufferVector = transform.TransformPoint(bufferVector);
        } while (!ContainsPoint(points, bufferVector));

        Instantiate(wave.GetElement(waveIndex), bufferVector, Quaternion.identity); // Spawn the enemy
        yield return(new WaitForSeconds(wave.GetSpawnInterval(waveIndex)));         // Wait for the time delay for the spawned enemy

        if (enemyCount > wave.GetSpawnAmount(waveIndex))                            // If the required number of enemies was spawned: Advance in the list
        {
            waveIndex++;
            enemyCount = 1;
        }

        canSpawn = true;
    }
Beispiel #2
0
    IEnumerator SpawnEnemy()
    {
        if (waveIndex > wave.NumOfElements() - 1) // If the end of the list was reached: Destroy myself.
        {
            if (!loop)
            {
                Destroy(gameObject);
            }
            else
            {
                trigger    = false;
                waveIndex  = 0;
                enemyCount = 1;
            }
        }
        canSpawn     = false;
        bufferVector = Vector3.Lerp(transform.TransformPoint(p0), transform.TransformPoint(p1), Random.Range(0.0f, 1.0f));
        Instantiate(wave.GetElement(waveIndex), bufferVector, Quaternion.identity); // Spawn the enemy
        enemyCount++;                                                               // Count number of the spawned enemies
        yield return(new WaitForSeconds(wave.GetSpawnInterval(waveIndex)));         // Wait for the time delay for the spawned enemy

        if (enemyCount > wave.GetSpawnAmount(waveIndex))                            // If the required number of enemies was spawned: Advance in the list
        {
            waveIndex++;
            enemyCount = 1;
        }

        canSpawn = true;
    }
    IEnumerator SpawnEnemy()
    {
        if (waveIndex > wave.NumOfElements() - 1) // If the end of the list was reached: Destroy myself.
        {
            if (!loop)
            {
                Destroy(gameObject);
            }
            else
            {
                trigger    = false;
                waveIndex  = 0;
                enemyCount = 1;
            }
        }
        canSpawn = false;

        float a = Random.Range(0.0f, 1.0f) * 2 * Mathf.PI;
        float r = radius * Mathf.Sqrt(Random.Range(0.0f, 1.0f));

        bufferVector.Set(r * Mathf.Cos(a), transform.position.y, r * Mathf.Sin(a));

        Instantiate(wave.GetElement(waveIndex), bufferVector, Quaternion.identity); // Spawn the enemy
        enemyCount++;                                                               // Count number of the spawned enemies
        yield return(new WaitForSeconds(wave.GetSpawnInterval(waveIndex)));         // Wait for the time delay for the spawned enemy

        if (enemyCount > wave.GetSpawnAmount(waveIndex))                            // If the required number of enemies was spawned: Advance in the list
        {
            waveIndex++;
            enemyCount = 1;
        }

        canSpawn = true;
    }