my instantiation script works sometimes but not all.. why?
this script does instantiate as its supposed to, but not all the time when I test the game it works sometimes and then when I stop and restart game a minute later it doesn't spawn as much and stops spawning completely. if I test the game 10 times 4 of 10 will spawn correctly but other times it will spawn a few and stop completely. (when I say test I mean just starting and stopping the game and playing)
again I have been testing this game for weeks and im getting same results, please keep in mind im not altering any code its just start and stop game to test and trying to figure why this is happening
below is 1 of the scripts I have on the enemy
using UnityEngine;
using System.Collections;
public class spn2 : MonoBehaviour
{
public GameObject EasyEnemey;
public GameObject MediumEnemey;
public GameObject HardEnemey;
public Transform[] SpawnPoints;
public float TimeBetweenSpawns;
public int NumberOfEnemiesToSpawn;
public int NumberOfMediumEnemiesToSpawn;
public float EasyChance;
public float MediumChance;
public float HardChance;
private int waveNumber;
private float spawnTimer;
private int numberOfEnemies;
private int numberOfMediumEnemies;
// Use this for initialization
void Start()
{
//this below is the time to spawn so if 4 , every 4 seconds 1 will spawn etc
this.spawnTimer = 3.0f;
this.waveNumber = 0;
float totalChance = this.EasyChance + this.MediumChance + this.HardChance;
if (Mathf.Abs(totalChance - 1.0f) > 0.0001f)
{
Debug.LogWarning("Warning: The chances should add up to 1.0 (" + totalChance + " currently)");
}
}
// Update is called once per frame
void Update()
{
this.spawnTimer -= Time.deltaTime;
Debug.Log("Counter: " + spawnTimer);
if (this.spawnTimer <= 0.0f)
{
Debug.LogWarning("Spawining");
Transform spawnPoint = SpawnPoints[Random.Range(0, SpawnPoints.Length)];
Vector2 spawnPos = spawnPoint.position;
Quaternion spawnRot = spawnPoint.rotation;
GameObject tempEnemy = null;
switch (this.waveNumber)
{
case 0:
tempEnemy = Instantiate(EasyEnemey, spawnPos, spawnRot) as GameObject;
this.numberOfEnemies++;
if (this.numberOfEnemies >= this.NumberOfEnemiesToSpawn)
{
this.waveNumber++;
}
break;
case 1:
tempEnemy = Instantiate(MediumEnemey, spawnPos, spawnRot) as GameObject;
this.numberOfMediumEnemies++;
if (this.numberOfMediumEnemies >= this.NumberOfMediumEnemiesToSpawn)
{
this.waveNumber++;
}
break;
case 2:
float randomFloat = Random.value;
if (randomFloat < this.EasyChance)
{
tempEnemy = Instantiate(MediumEnemey, spawnPos, spawnRot) as GameObject;
}
else if (randomFloat < this.EasyChance + this.MediumChance)
{
tempEnemy = Instantiate(MediumEnemey, spawnPos, spawnRot) as GameObject;
}
else
{
tempEnemy = Instantiate(HardEnemey, spawnPos, spawnRot) as GameObject;
}
break;
}
this.spawnTimer = this.TimeBetweenSpawns;
if (tempEnemy != null)
{
//Destroy(tempEnemy, 2.6f);
}
}
}
}
2d game
Your answer
Follow this Question
Related Questions
Simple Prefab Instantiate "(Clone)" Question 3 Answers
I'm having problems instaniating 0 Answers
Need help with shooting and reload script 1 Answer
Accessing the script of an instantiated object 1 Answer
Rotation of instantiated object 1 Answer