示例#1
0
    // Update is called once per frame
    void Update()
    {
        Skin = GameObject.Find("FinalBossLaser 2 1 1 1").GetComponent <Enemybehavior>();
        //==
        if (Skin.health < 1200)
        {
            currentMaterials %= Materials.Length;
            GetComponent <Renderer>().material = Materials[currentMaterials];
        }

        if (Skin.health < 1000)
        {
            currentMaterials++;
            currentMaterials %= Materials.Length;
            GetComponent <Renderer>().material = Materials[currentMaterials];
        }

        if (Skin.health < 800)
        {
            currentMaterials++;
            currentMaterials %= Materials.Length;
            GetComponent <Renderer>().material = Materials[currentMaterials];
        }

        if (Skin.health < 600)//(health < 600 && 400 > health)
        {
            currentMaterials++;
            currentMaterials %= Materials.Length;

            GetComponent <Renderer>().material = Materials[currentMaterials];
        }

        if (Skin.health < 400)
        {
            currentMaterials++;
            currentMaterials %= Materials.Length;
            GetComponent <Renderer>().material = Materials[currentMaterials];
        }

        if (Skin.health < 200)
        {
            currentMaterials++;
            currentMaterials %= Materials.Length;
            GetComponent <Renderer>().material = Materials[currentMaterials];
        }
    }
    IEnumerator SpawnWaves()                 // erstellen eine routine
    {
        while (currentWave < waveList.Count) //Prüfung wie viele Wellen noch bevorsthenen und bei welcher wir gerade sind
        {
            /*
             * if(currentWave == waveList.Count-1)
             * {
             *  spawnComplete = true;
             * }
             */

            //Paths neue Formation
            for (int i = 0; i < waveList[currentWave].pathPrefabs.Length; i++) //spawning pathes
            {
                GameObject newPathObj = Instantiate(waveList[currentWave].pathPrefabs[i], transform.position, Quaternion.identity) as GameObject;
                Path       newPath    = newPathObj.GetComponent <Path>();
                activePathList.Add(newPath);
            }
            yield return(new WaitForSeconds(enemySpawnInterval));

            // Spawn der Virus-Schiffe
            for (int i = 0; i < waveList[currentWave].VirusAmount; i++)
            {
                GameObject    newVirus      = Instantiate(VirusPrefab, transform.position, Quaternion.identity) as GameObject; //erstellen des neues Gameobjekt und rotation
                Enemybehavior VirusBehavior = newVirus.GetComponent <Enemybehavior>();                                         // auf Enemybehavior zugreifen und übertragen damit neu erstellter Virus weiß was er machen soll

                //neue Spawn Formation
                VirusBehavior.SpawnSetup(activePathList[ZickZack()], VirusID, VirusFormation); //einbringung der Daten vom Enemybehavior (pathToFollow = path, enemyID = ID, formation = _formation
                VirusID++;

                //alte Spawn Formation
                //VirusBehavior.SpawnSetup(waveList[currentWave].path, VirusID, VirusFormation);


                spawnedEnemies.Add(newVirus);

                //weitergeben an Game Manager
                GameManager.instance.AddEnemy();

                //Warten auf nächstes Spawn (interval)
                yield return(new WaitForSeconds(enemySpawnInterval));
            }

            // Spawn der Enemy2 Schiffe

            for (int i = 0; i < waveList[currentWave].Enemy2Amount; i++)
            {
                GameObject    newEnemy2      = Instantiate(Enemy2Prefab, transform.position, Quaternion.identity) as GameObject; //erstellen des neues Gameobjekt und rotation
                Enemybehavior Enemy2Behavior = newEnemy2.GetComponent <Enemybehavior>();                                         // auf Enemybehavior zugreifen und übertragen damit neu erstellter Virus weiß was er machen soll

                Enemy2Behavior.SpawnSetup(activePathList[ZickZack()], Enemy2ID, Enemy2Formation);                                //einbringung der Daten vom Enemybehavior (pathToFollow = path, enemyID = ID, formation = _formation
                Enemy2ID++;

                //spawnedEnemies.Add(newEnemy2);

                //weitergeben an Game Manager
                //GameManager.instance.AddEnemy();

                //Warten auf nächstes Spawn (interval)
                yield return(new WaitForSeconds(enemySpawnInterval));
            }
            // for (int i = 0; i < waveList[currentWave].Enemy2Amount; i++) ----------------- Weiß nicht mehr wozu das war


            // Spawn der Boss Schiffe
            for (int i = 0; i < waveList[currentWave].BossAmount; i++)
            {
                GameObject    newBoss      = Instantiate(BossPrefab, transform.position, Quaternion.identity) as GameObject; //erstellen des neues Gameobjekt und rotation
                Enemybehavior BossBehavior = newBoss.GetComponent <Enemybehavior>();                                         // auf Enemybehavior zugreifen und übertragen damit neu erstellter Virus weiß was er machen soll

                BossBehavior.SpawnSetup(activePathList[ZickZack()], BossID, BossFormation);                                  //einbringung der Daten vom Enemybehavior (pathToFollow = path, enemyID = ID, formation = _formation
                BossID++;

                spawnedEnemies.Add(newBoss);

                //weitergeben an Game Manager
                GameManager.instance.AddEnemy();

                //Warten auf nächstes Spawn (interval)
                yield return(new WaitForSeconds(enemySpawnInterval));
            }



            yield return(new WaitForSeconds(waveSpawnInterval));

            currentWave++;                     //Startet nächste Welle

            foreach (Path p in activePathList) //löschen des benutzten Weg
            {
                Destroy(p.gameObject);
            }
            activePathList.Clear();
        }
    }