object pooler with delayed object pools
so i have made my generic object pooler script after following various guides and tips.
this is the script:
using UnityEngine;
using System.Collections;
public class ObjectGenerator : MonoBehaviour {
public Transform generationPoint, maxWidthPoint, minWidthPoint, player;
public float distBetweenMin, distBetweenMax, playeroffsetX, maxWidthChange;
public ObjectPooler[] theObjectPools;
public bool chainSpawn = false;
private float distBetween, minWidth, maxWidth, widthChange;
private int objectSelector;
private float[] objectHeights;
void Start()
{
objectHeights = new float[theObjectPools.Length];
for (int i = 0; i < theObjectPools.Length; i++)
{
objectHeights [i] = theObjectPools [i].pooledObject.GetComponent<BoxCollider2D> ().size.y;
}
maxWidth = maxWidthPoint.position.x;
minWidth = minWidthPoint.position.x;
}
void Update()
{
SpawnObject();
}
void SpawnObject()
{
if(transform.position.y > generationPoint.position.y)
{
distBetween = Random.Range (distBetweenMin, distBetweenMax);
objectSelector = Random.Range (0, theObjectPools.Length);
if (!chainSpawn)
{
widthChange = player.transform.position.x + Random.Range (minWidth, maxWidth);
}
else
{
widthChange = player.transform.position.x + Random.Range (maxWidthChange, -maxWidthChange);
if (widthChange > maxWidth)
{
widthChange = maxWidth;
}
else if (widthChange < minWidth)
{
widthChange = minWidth;
}
}
float z = transform.position.z;
transform.position = new Vector3 (widthChange + playeroffsetX, transform.position.y - (objectHeights[objectSelector] / 2) - distBetween, z);
GameObject newObject = theObjectPools[objectSelector].GetPooledObject();
newObject.transform.position = transform.position;
newObject.transform.rotation = transform.rotation;
newObject.SetActive (true);
transform.position = new Vector3 (player.transform.position.x, transform.position.y - (objectHeights[objectSelector] / 2), z);
}
}
}
this script actually seems to work really well but as my game dev have gone further i have realised that it required another feature which is where i get stuck.
so what i need is to be able to have multiple pools of various objects (which i have), these object pools currently are all being accessed randomly using this part of the script
objectSelector = Random.Range (0, theObjectPools.Length);
what i would like is to have the option to as time in the game goes by the various pools get activated, for example first i would like to spawn obj1 then say after a minute add obj2 pool (can now spawn randomly obj1 or obj2).
has anyone got any ideas?
Comment