The spawning gap keeps on getting bigger and bigger how can i stop this, also how can i make this spawn one by one?
using UnityEngine;
using System.Collections.Generic;
public class PlatformManager:MonoBehaviour
{
public Transform prefab;
public int numberOfObjects;
public float recycleOffset;
public Vector3 minSize, maxSize, minGap, maxGap;
public float minY, maxY;
private Vector3 nextPosition;
private Queue < Transform > objectQueue;
void Start ()
{
objectQueue = new Queue < Transform > (numberOfObjects);
for (int i = 0; i < numberOfObjects; i++)
{
objectQueue.Enqueue ((Transform) Instantiate (prefab));
}
nextPosition = transform.localPosition;
for (int i = 0; i < numberOfObjects; i++) {
Recycle ();
}
}
public int maxNumberOfObjects = 40; //Or whatever
public float spawnDelay = 10f; //Delay between new ones
float lastTime = 0;
void Update ()
{
if (objectQueue.Count < maxNumberOfObjects
&& Time.time - lastTime > spawnDelay) {
lastTime = Time.time;
objectQueue.Enqueue ((Transform) Instantiate (prefab));
}
if (objectQueue.Peek () == null) {
Transform newOne;
objectQueue.Dequeue ();
objectQueue.Enqueue (newOne = (Transform) Instantiate (prefab));
newOne.gameObject.SetActiveRecursively (false);
nextPosition = transform.localPosition;
}
if (objectQueue.Peek ().gameObject.active == false ||
objectQueue.Peek ().localPosition.x + recycleOffset <
Runner.distanceTraveled) {
Recycle ();
}
}
private void Recycle ()
{
Vector3 scale = new Vector3 (Random.Range (minSize.x, maxSize.x),
Random.Range (minSize.y, maxSize.y),
Random.Range (minSize.z, maxSize.z));
Vector3 position = nextPosition;
position.x += scale.x * 0.5f;
position.y += scale.y * 0.5f;
Transform o = objectQueue.Dequeue ();
o.localScale = scale;
o.localPosition = position;
objectQueue.Enqueue (o);
nextPosition +=
new Vector3 (Random.Range (minGap.x, maxGap.x) + scale.x,
Random.Range (minGap.y, maxGap.y),
Random.Range (minGap.z, maxGap.z));
if (nextPosition.y < minY) {
nextPosition.y = minY + maxGap.y;
}
else if (nextPosition.y > maxY) {
nextPosition.y = maxY - maxGap.y;
}
}
}