Hi guys i'm making a tower deffense game and i have one problem with my script:
#pragma strict
static var playerDamage = 0;
//states
var waveActive : boolean = false;
var spawnEnemies : boolean = false;
//player variables
var healthCount : int = 10;
var scoreCount : int = 0;
//Gui Variables
var waveText : UILabel;
var healthText : UILabel;
var scoreText : UILabel;
//define Wave specific variables
var waveLevel : int = 0;
var difficultyMultiplier : float = 1.0;
var waveLegth : float= 30.0;
var intermissionTime : float= 5.0;
private var waveEndTime : float = 0;
//enemyy variables
var enemyPrefabs : GameObject[];
var flyerSpawns : Transform;
var flyerSpawnPoints : Transform[];
var respawnMinBase : float = 3.0;
var respawnMaxBase : float = 10.0;
var respawnMin : float= 3.0;
private var respawnMax : float = 10.0;
var respawnInterval : float= 2.5;
var enemyCount : int = 0;
private var lastSpawnTime : float = 0;
//
//
//
function Start ()
{
flyerSpawnPoints = new Transform[flyerSpawns.childCount];
var i : int = 0;
for(var theSpawnPoint : Transform in flyerSpawns)
{
flyerSpawnPoints[i] = theSpawnPoint;
i++;
}
SetNextWave();
StartNewWave();
}
function SetNextWave()
{
waveLevel++;
difficultyMultiplier = ((Mathf.Pow(waveLevel,2))*0.005)+1;
respawnMin = respawnMinBase * (1/difficultyMultiplier);
respawnMax = respawnMaxBase * (1/difficultyMultiplier);
}
function StartNewWave()
{
UpdateHUD();
SpawnNewEnemy();
waveEndTime = Time.time + waveLegth;
waveActive = true;
spawnEnemies = true;
}
function UpdateHUD()
{
waveText.text = "Wave: " + waveLevel;
scoreText.text = "Score: " + scoreCount;
healthText.text = "Shields: " + healthCount;
}
function SpawnNewEnemy()
{
//get a random index to choose an enemy prefab with
var enemyChoice = Random.Range(0,enemyPrefabs.length);
//since flying and ground units probably shouldnt in the same location, we have to seperate this part and spawn based on a tag
var spawnChoice : int;
if(enemyPrefabs[enemyChoice].tag == "FlyingEnemy")
{
//get a random index to choose spawn location with
spawnChoice = Random.Range(0,flyerSpawnPoints.length);
//spawn the flyer at a chosen location and rotation
Instantiate(enemyPrefabs[enemyChoice], flyerSpawnPoints[spawnChoice].position, flyerSpawnPoints[spawnChoice].rotation);
}
else
{
//
}
enemyCount++;
lastSpawnTime = Time.time;
respawnInterval = Random.Range(respawnMin, respawnMax);
}
// Update is called once per frame
function Update () {
if(waveActive)
{
if(Time.time >= waveEndTime)
{
spawnEnemies = false;
if(enemyCount ==0)
{
FinishWave();
}
}
if(spawnEnemies)
{
if(Time.time > (lastSpawnTime + respawnInterval))
{
SpawnNewEnemy();
}
}
}
}
function FinishWave()
{
waveActive = false;
yield WaitForSeconds(intermissionTime);
SetNextWave();
StartNewWave();
}
/* function SpawnFlyer()
{
nextFlyerSpawnTime += flyerInterval;
var i : int = Random.Range(0,flyerSpawnPoints.Length);
newFlyer = GameObject.Instantiate(flyerPrefab, flyerSpawnPoints[i].position, flyerSpawnPoints[i].rotation) as GameObject;
} */
And problem:
IndexOutOfRangeException: Array index is out of range.
LevelMaster.SpawnNewEnemy () (at Assets/Skrypty/LevelMaster.js:88)
LevelMaster.StartNewWave () (at Assets/Skrypty/LevelMaster.js:67)
LevelMaster.Start () (at Assets/Skrypty/LevelMaster.js:51)
↧