- Home /
Spawn Script problem
Level Attributes Script
static var gameTime: int; function Update () { gameTime= Time.time;
}
Spawn Script
var direction:String; var waves: String[]; var wavesdone: int=0; var currentwave:Array;
function Update(){
if (wavesdone<waves.length){ currentwave=waves[wavesdone].Split(","[0]); if (Level_Attributes.gameTime == currentwave[0]){ print("Spawn Me"); } }
}
basically I have waves Array, thats something like string -> 5,2 where first number is the time of spawning, and second is number of enemies.
gameTime is integer to which time.time is assigned in another script. I extract number 5 from waves, and try to compare it with gameTime, so when they are equal "Spawn Me" Is Printed.
I have problem over here
if (Level_Attributes.gameTime == currentwave[0])
do I have to convert currentwave[0] to integer to be able to perform if on it? if so how can I convert string to int. if not is there something else wrong with my script?
thx in advance
Answer by Bunny83 · Feb 08, 2011 at 05:32 PM
You need to convert the string to int.
int.Parse(currentwave[0])
But another hint: Time.time is a float that represents seconds. If you cast the float value to int (like you have done by assigning Time.time to your gameTime var) the gameTime variable will only change every full second. That means with a framerate of 30fps it stays for 30 frames 5. You need to increment "wavesdone" immideately when you spawn that wave so at next Update he checks for the next wave.
To compare such values with == is not very reliable. It's better to check for >=
ps. it would be much better to do that string Split stuff and even the int.Parse() only once for each wave and store the actual "timeout" value and use that for the comparison.
var direction : String; var waves : String[]; var wavesdone : int = 0; var currentWaveTime : int; var currentWaveCount : int;
function NextWave() { if (wavesdone<waves.length){ var waveinfo:Array = waves[wavesdone].Split(","[0]); currentWaveTime = int.Parse(currentwave[0]); currentWaveCount = int.Parse(currentwave[1]); } }
function SpawnWave() { // Spawn wave here print("Spawn Me");
wavesdone++; // Get next wave information NextWave(); }
function Start() { NextWave(); }
function Update() { if (Level_Attributes.gameTime >= currentWaveTime){ SpawnWave() } }
Answer by GeekURLant · Feb 08, 2011 at 03:39 PM
Maybe try this:
if (GetComponent(Level_Attributes).gameTime == currentwave[0])
And maybe also
var currentwave : int[];
That's not correct. gameTime is static so you don't need an instance of this class.
Your answer
Follow this Question
Related Questions
Enemy spawner help with lengths 0 Answers
Converting String to Integer is not working 1 Answer
Converting strings to numbers 1 Answer
Replace String Characters with certain Numbers 2 Answers
Floating Point and ToString issue 2 Answers