In my project i am trying to get a gameObject to spawn randomly within a window of time.
Every second, the gameObject should be spawned randomly between 0 and 1 seconds.
A new game object cannot spawn until the entire second is up.
Here is my demo: http://soylentworks.com/codesucks/Builds/TouchnDrag.html
You can see why i want to offset the time at which things spawn, since all 3 game objects come out at the same time.
In my code i created spawnWindow, and spawnWindowOpen to help with this, but i keep getting the wrong results. Read code comments for more detail.
Here is my current code for the Spawner object:
using UnityEngine;
using System.Collections;
public class piSpawner : MonoBehaviour {
public GameObject follower; // A single follower defined in prefab editor.
public GameObject[] followers; // A group of followers defined in the prefab editor
public float spawnRate = 1.0f; //The frequency at which followers spawn.
private float nextSpawn = 0.0f; //used to trigger the next spawn
private float nextSpawnWindow = 0.0f; // used to trigger SpawnWindow
int followerIndex; // defines which follower to spawn
float spawnRange; // defines the area in which the follower can spawn relative to th Spawner Object
Vector3 spawnFromPoint; // tells the Spawner where to spawn something
float spawnWindow; // The time interval in which a follower can spawn
bool spawnWindowOpen = false; //a follower can only spawn if true
void Start () {
//this.gameObject.GetComponent<MeshRenderer>.enabled = false;
renderer.enabled = false;
}
void Update () {
followerIndex = Random.Range(0, followers.Length); // Give me a random int from followers[]
spawnRange = Random.Range(0.5f, -0.5f);
spawnFromPoint = new Vector3(0, spawnRange, 0);
//Make followers spawn on a countdown timer
// Every time the SpawnRate ticks, the follower can spawn at anytime between this tick,and the next tick.
if (Time.time > nextSpawn && spawnWindowOpen == true) {
spawnWindow = Random.Range(Time.time, Time.time + spawnRate);
nextSpawnWindow = Time.time + spawnWindow;
GameObject piClone = Instantiate(followers[followerIndex], transform.position + spawnFromPoint, transform.rotation) as GameObject;
spawnWindowOpen = false;
Debug.Log ("***Follower has been spawned***");
}
if (Time.time > nextSpawn && spawnWindowOpen == false) {
nextSpawn = Time.time + spawnRate; // Trigger next spawn
spawnWindowOpen = true;
Debug.Log ("***Ready for the next follower***");
}
}
}
Any help appreciated.