x


enemy wave spawn script wont work

i have a problem my scrip spawns 1 set of enemies but then the other set dosnt appear even thow ive set it up all right with the spawn point and all that and the enemies have A SCRIPT HERE IS THE CODE FOR MY SPAWNING

 using UnityEngine;
 
 using System.Collections;
 
 using System.Collections.Generic;
 
 
 
 public class Spawner : MonoBehaviour
 
 {
 
     // Color of the gizmo
 
     public Color gizmoColor = Color.red;
 
     
 
     //-----------------------------------
 
     // All the Enums
 
     //-----------------------------------
 
     // Spawn types
 
     public enum SpawnTypes
 
     {
 
         Normal,
 
         Once,
 
         Wave,
 
         TimedWave
 
     }
 
     // The different Enemy levels
 
     public enum EnemyLevels
 
     {
 
         Easy,
 
         Medium,
 
         Hard,
 
         Boss
 
     }
 
     //---------------------------------
 
     // End of the Enums
 
     //---------------------------------
 
     
 
     // Enemy level to be spawnedEnemy
 
     public EnemyLevels enemyLevel = EnemyLevels.Easy;
 
     
 
     //----------------------------------
 
     // Enemy Prefabs
 
     //----------------------------------
 
     public GameObject EasyEnemy;
 
     public GameObject MediumEnemy;
 
     public GameObject HardEnemy;
 
     public GameObject BossEnemy;
 
     private Dictionary<EnemyLevels, GameObject> Enemies = new Dictionary<EnemyLevels, GameObject>(4);
 
     //----------------------------------
 
     // End of Enemy Prefabs
 
     //----------------------------------
 
 
 
     //----------------------------------
 
     // Enemies and how many have been created and how many are to be created
 
     //----------------------------------
 
     public int totalEnemy = 10;
 
     private int numEnemy = 0;
 
     private int spawnedEnemy = 0;
 
     //----------------------------------
 
     // End of Enemy Settings
 
     //----------------------------------
 
 
 
     
 
     // The ID of the spawner
 
     private int SpawnID;
 
     
 
     //----------------------------------
 
     // Different Spawn states and ways of doing them
 
     //----------------------------------
 
     private bool waveSpawn = false;
 
     public bool Spawn = true;
 
     public SpawnTypes spawnType = SpawnTypes.Normal;
 
     // timed wave controls
 
     public float waveTimer = 30.0f;
 
     private float timeTillWave = 0.0f;
 
     //Wave controls
 
     public int totalWaves = 5;
 
     private int numWaves = 0;
 
     //----------------------------------
 
     // End of Different Spawn states and ways of doing them
 
     //----------------------------------
 
     void Start()
 
     {
 
         // sets a random number for the id of the spawner
 
         SpawnID = Random.Range(1, 500);
 
         Enemies.Add(EnemyLevels.Easy, EasyEnemy);
 
         Enemies.Add(EnemyLevels.Boss, BossEnemy);
 
         Enemies.Add(EnemyLevels.Medium, MediumEnemy);
 
         Enemies.Add(EnemyLevels.Hard, HardEnemy);
 
     }
 
     // Draws a cube to show where the spawn point is... Useful if you don't have a object that show the spawn point
 
     void OnDrawGizmos()
 
     {
 
         // Sets the color to red
 
         Gizmos.color = gizmoColor;
 
         //draws a small cube at the location of the gam object that the script is attached to
 
         Gizmos.DrawCube(transform.position, new Vector3 (0.5f,0.5f,0.5f));
 
     }
 
     void Update ()
 
     {
 
         if(Spawn)
 
         {
 
             // Spawns enemies everytime one dies
 
             if (spawnType == SpawnTypes.Normal)
 
             {
 
                 // checks to see if the number of spawned enemies is less than the max num of enemies
 
                 if(numEnemy < totalEnemy)
 
                 {
 
                     // spawns an enemy
 
                     spawnEnemy();
 
                 }
 
             }
 
             // Spawns enemies only once
 
             else if (spawnType == SpawnTypes.Once)
 
             {
 
                 // checks to see if the overall spawned num of enemies is more or equal to the total to be spawned
 
                 if(spawnedEnemy >= totalEnemy)
 
                 {
 
                     //sets the spawner to false
 
                     Spawn = false;
 
                 }
 
                 else
 
                 {
 
                     // spawns an enemy
 
                     spawnEnemy();
 
                 }
 
             }
 
             //spawns enemies in waves, so once all are dead, spawns more
 
             else if (spawnType == SpawnTypes.Wave)
 
             {
 
                 if(numWaves < totalWaves + 1)
 
                 {
 
                     if (waveSpawn)
 
                     {
 
                         //spawns an enemy
 
                         spawnEnemy();
 
                     }
 
                     if (numEnemy == 0)
 
                     {
 
                         // enables the wave spawner
 
                         waveSpawn = true;
 
                         //increase the number of waves
 
                         numWaves++;
 
                     }
 
                     if(numEnemy == totalEnemy)
 
                     {
 
                         // disables the wave spawner
 
                         waveSpawn = false;
 
                     }
 
                 }
 
             }
 
             // Spawns enemies in waves but based on time.
 
             else if(spawnType == SpawnTypes.TimedWave)
 
             {
 
                 // checks if the number of waves is bigger than the total waves
 
                 if(numWaves <= totalWaves)
 
                 {
 
                     // Increases the timer to allow the timed waves to work
 
                     timeTillWave += Time.deltaTime;
 
                     if (waveSpawn)
 
                     {
 
                         //spawns an enemy
 
                         spawnEnemy();
 
                     }
 
                     // checks if the time is equal to the time required for a new wave
 
                     if (timeTillWave >= waveTimer)
 
                     {
 
                         // enables the wave spawner
 
                         waveSpawn = true;
 
                         // sets the time back to zero
 
                         timeTillWave = 0.0f;
 
                         // increases the number of waves
 
                         numWaves++;
 
                         // A hack to get it to spawn the same number of enemies regardless of how many have been killed
 
                         numEnemy = 0;
 
                     }
 
                     if(numEnemy >= totalEnemy)
 
                     {
 
                         // diables the wave spawner
 
                         waveSpawn = false;
 
                     }
 
                 }
 
                 else
 
                 {
 
                     Spawn = false;
 
                 }
 
             }
 
         }
 
     }
 
     // spawns an enemy based on the enemy level that you selected
 
     private void spawnEnemy()
 
     {
 
         GameObject Enemy = (GameObject) Instantiate(Enemies[enemyLevel], gameObject.transform.position, Quaternion.identity);
 
         Enemy.SendMessage("setName", SpawnID);
 
         // Increase the total number of enemies spawned and the number of spawned enemies
 
         numEnemy++;
 
         spawnedEnemy++;
 
     }
 
     // Call this function from the enemy when it "dies" to remove an enemy count
 
     public void killEnemy(int sID)
 
     {
 
         // if the enemy's spawnId is equal to this spawnersID then remove an enemy count
 
         if (SpawnID == sID)
 
         {
 
             numEnemy--;
 
         }
 
     }
 
     //enable the spawner based on spawnerID
 
     public void enableSpawner(int sID)
 
     {
 
         if (SpawnID == sID)
 
         {
 
             Spawn = true;
 
         }
 
     }
 
     //disable the spawner based on spawnerID
 
     public void disableSpawner(int sID)
 
     {
 
         if(SpawnID == sID)
 
         {
 
             Spawn = false;
 
         }
 
     }
 
     // returns the Time Till the Next Wave, for a interface, ect.
 
     public float TimeTillWave
 
     {
 
         get
 
         {
 
             return timeTillWave;
 
         }
 
     }
 
     // Enable the spawner, useful for trigger events because you don't know the spawner's ID.
 
     public void enableTrigger()
 
     {
 
         Spawn = true;
 
     }
 
 }
more ▼

asked Dec 01, 2011 at 10:41 AM

cubelord gravatar image

cubelord
31 19 14 17

Some tips for getting useful answers- don't expect people to read through walls of text like that. I don't want to have to analyse your entire script to work out that it's a one-line problem- keep it down to the bit where you think the problem is actually occurring.

Dec 01, 2011 at 11:00 AM syclamoth
(comments are locked)
10|3000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x4913
x1049
x780
x14

asked: Dec 01, 2011 at 10:41 AM

Seen: 1113 times

Last Updated: Dec 01, 2011 at 11:00 AM