예제 #1
0
    IEnumerator SpawnWaves()
    {
        while (spawning)
        {
            int randX = Random.Range(0, initialX.Length);

            Vector3 randPos = new Vector3(initialX[randX], initialY, -0.1f);

            //Since river means instant death, make sure there is an interval between two rivers
            int riverCount   = 0;
            int currentLevel = GameManager.GetLevel() + 1;
            if (currentLevel > EnemyTypes.Count)
            {
                currentLevel = EnemyTypes.Count;
            }

            //Spawn everything for debugging
            //currentLevel = EnemyTypes.Count;


            int typeRand = Random.Range(0, 100);
            if (typeRand < 60)
            {
                int randType = Random.Range(0, currentLevel);

                if (buffer[EnemyTypes[randType].name].Count > 0)
                {
                    GameObject g = buffer[EnemyTypes[randType].name].Pop();
                    g.transform.position = randPos;
                    g.SetActive(true);
                }
                else
                {
                    EnemyControl.Create(EnemyTypes[randType], randPos);
                }
                riverCount--;
            }
            else if (typeRand < 98)
            {
                int randType = Random.Range(0, CollectibleTypes.Count);
                if (buffer[CollectibleTypes[randType].name].Count > 0)
                {
                    GameObject c = buffer[CollectibleTypes[randType].name].Pop();
                    c.transform.position = randPos;
                    c.SetActive(true);
                }
                else
                {
                    CollectibleControl.Create(CollectibleTypes[randType], randPos);
                }
                riverCount--;
            }
            else
            {
                if (riverCount == 0 && currentLevel > 3)
                {
                    riverCount = riverInterval;
                    int randType = Random.Range(0, RiverTypes.Count);
                    if (buffer[RiverTypes[randType].name].Count > 0)
                    {
                        GameObject r = buffer[RiverTypes[randType].name].Pop();
                        r.transform.position = randPos;
                        r.SetActive(true);
                    }
                    else
                    {
                        RiverControl.Create(RiverTypes[randType], randPos);
                    }
                }
            }


            yield return(new WaitForSeconds(spawnInterval));
        }
    }