- Home /
 
can anyone please help with enemy wave spawn?
hi i designed a wave spawn script for my 2d side scroll-er the issue i am receiving that i have realised is that my script does not add to the enemies alive value and wen they die it doesn't decrease the value also the value i put in total enemies should spawn when game starts but doesn't any help ? i was finkin maybe to make a new script that is linked to this script on every enemy so when they spawn they add to the count not sure any ideas ?
heres my script:
 var location : Transform;
 var enemySelect : Rigidbody2D;
 var spawn1 : Transform;
 var spawn2 : Transform;
 var spawn3 : Transform;
 var waveTime : float;
 var waveLevel : int = 1;
 var totalEnemy : int = 5;
 var enemyAlive : int = 0;
 var waitToWave : float = 10;
 var waveMultiplier : int = 2;
 var enemy1 : Rigidbody2D;
 var enemy2 : Rigidbody2D;
 var enemy3 : Rigidbody2D;
  
 function Update () {
 if(enemyAlive == 0){ //the is no creature left; create a wave!
  waveLevel++;
  totalEnemy = totalEnemy * waveMultiplier;
         if (waitToWave <= waveTime) {
             waveTime = 0; //reset time
           
             enemyAlive = totalEnemy;
              Spawn();
        for(var i : int = 0; i < totalEnemy; i++)
     {
         Debug.Log("Creating enemy number: " + i);
     }
  
         }else {
             waveTime += Time.deltaTime; 
             
 }
 }
 }
  
 function Spawn() 
 {
  
  //select a random number, inside a maths function absolute command to ensure it is a whole number
  var randomPick : int = Mathf.Abs(Random.Range(1,4));
  
  
  
  //create a location 'Transform' type variable to store one of 3 possible locations declared at top of script
  var location1 : Transform;
  var location2 : Transform;
  var location3 : Transform;
  //check what randomPick is, and select one of the 3 locations, based on that number
  if(randomPick == 1){
   location = spawn1;
   Debug.Log("Choose pos 1");
  }
  else if(randomPick == 2){
   location = spawn2;
   Debug.Log("Choose pos 2");
  }
  else if(randomPick == 3){
   location = spawn3;
   Debug.Log("Choose pos 3");
  }
  
  //select a random number, inside a maths function absolute command to ensure it is a whole number
  var randomPickEnemy : int = Mathf.Abs(Random.Range(1,4));
  
  //check what randomPick is, and select one of the 3 locations, based on that number
  if(randomPickEnemy == 1){
   enemySelect = enemy1;
   Debug.Log("Choose pos 1");
  }
  else if(randomPickEnemy == 2){
   enemySelect = enemy2;
   Debug.Log("Choose pos 2");
  }
  else if(randomPickEnemy == 3){
   enemySelect = enemy3;
   Debug.Log("Choose pos 3");
  }
  
  
  
  
  //create the object at point of the location variable
  var thingToMake : Rigidbody2D = Instantiate(enemySelect, location.position, location.rotation);
   thingToMake.AddForce(Vector3(0,0,100));
  
  
  //halt script for 1 second before returning to the start of the process
  yield WaitForSeconds(1);
 }
 
              From what I can tell, you never actually increase the 'enemyAlive' variable anywhere.
Try putting something like this in your spawn method so that, every time it is called, it adds one on:
enemyAlive ++;
"and wen they die it doesn't decrease the value"
I don't see anything here related to enemyHealth or enemyAlive-- is that elsewhere?
This is unnecessary, remove the $$anonymous$$athf.Abs stuff since you are feeding ints into Random.range and have it cast as an int, you'll get ints
 var randomPick : int = $$anonymous$$athf.Abs(Random.Range(1,4));
 
                  https://unity3d.com/learn/tutorials/modules/beginner/scripting
Your answer
 
             Follow this Question
Related Questions
JS to C# converting issues.. 1 Answer
Destroy and Spawn an Enemy 1 Answer
Trying to write enemy spawn in JS. 2 Answers
Help have script know how many enemies are in the world 1 Answer