Question by
Redmarketing · Dec 30, 2015 at 11:52 AM ·
2d2d game2d-platformerendless runnerinfinite runner
Object pooling system. Objects aren't spawning
Hy I got this code but the objects aren't spawning if someone could help my thanks.
Code:
using UnityEngine;
using System.Collections;
public class Platformgenerator : MonoBehaviour {
public GameObject thePlatform;
public Transform generationPoint;
public float distanceBetween;
private float platformWidth;
public float distanceBetweenMin;
public float distanceBetweenMax;
//public GameObject[] thePlatforms;
private int platformSelector;
private float[] platformWidths;
public Objectpooler[] theObjectpools;
// Use this for initialization
void Start () {
//platformWidth = thePlatforms.GetComponent<BoxCollider2D>().size.x;
platformWidths = new float[theObjectpools.Length];
for (int i = 0; i < theObjectpools.Length; i++)
{
platformWidths[i] = theObjectpools[i].pooledObject.GetComponent<BoxCollider2D>().size.x;
}
}
// Update is called once per frame
void Update () {
if(transform.position.x < generationPoint.position.x)
{
distanceBetween = Random.Range(distanceBetweenMin, distanceBetweenMax);
platformSelector = Random.Range(0, theObjectpools.Length);
transform.position = new Vector3(transform.position.x + platformWidth + distanceBetween, transform.position.y, transform.position.z);
//Instantiate (/*thePlatforms*/ thePlatforms[platformSelector], transform.position, transform.rotation);
GameObject newPlatform = theObjectpools[platformSelector].GetpooledObject();
newPlatform.transform.position = transform.position;
newPlatform.transform.rotation = transform.rotation;
newPlatform.SetActive (true);
}
}
}
Comment
This is the pooling script:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Objectpooler : $$anonymous$$onoBehaviour {
public GameObject pooledObject;
public int pooledAmount;
List<GameObject> pooledObjects;
// Use this for initialization
void Start () {
pooledObjects = new List<GameObject>();
for (int i = 0; i < pooledAmount; i++)
{
GameObject obj = (GameObject)Instantiate(pooledObject);
obj.SetActive (false);
pooledObjects.Add (obj);
}
}
public GameObject GetpooledObject()
{
for (int i = 0; i < pooledObjects.Count; i++)
{
if (!pooledObjects[i].activeInHierarchy)
{
return pooledObject;
}
}
GameObject obj = (GameObject)Instantiate(pooledObject);
obj.SetActive(false);
pooledObjects.Add (obj);
return obj;
}
}
Your answer
Follow this Question
Related Questions
Walking around 2D planets? 1 Answer
2D platformer AI 0 Answers
CS1216 error 0 Answers
How can I make player shoot in 2d with a joystick when we move the joystick out of its circuler area 0 Answers
Endless runner 1 Answer