- 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