- Home /
Strange cloning/ghosting problem with instantiated particles
I'm using an object pooling code from the live tutorial, but as an standalone script, so that I can access the pool from different gameobjects/scripts. The code is as follows:
public class SparksPool : MonoBehaviour { //to access this class externaly public static SparksPool sprkpool;
public GameObject sparks;
private int pooledAmount = 6;
List<GameObject> sparksOBJ;
void Awake ()
{
sprkpool = this;
sparksOBJ = new List<GameObject>();
for (int i = 0; i < pooledAmount; i++)
{
GameObject obj = (GameObject)Instantiate(sparks);
obj.SetActive(false);
sparksOBJ.Add(obj);
}
}
public void spawnSparks (Vector3 spawnposition)
{
int sparkAngleAdjust = 270;
float sparkDirection = transform.TransformDirection(sampleControlls.car.transform.localEulerAngles).y;
if (sampleControlls.car.xVel > 0) sparkAngleAdjust = 270;
else if (sampleControlls.car.xVel < 0) sparkAngleAdjust = 90;
for (int i = 0; i < sparksOBJ.Count; i++)
{
if(!sparksOBJ[i].activeInHierarchy)
{
sparksOBJ[i].transform.position = spawnposition;
sparksOBJ[i].transform.eulerAngles = new Vector3 (0, sparkDirection + sparkAngleAdjust, 90);
sparksOBJ[i].SetActive(true);
break;
}
}
}
}
Then, I'm trying to spawn the pooled particles, when a rigidbody (car) inters a trigger:
public class borderspring : MonoBehaviour { private Vector3 spawnposition;
void OnTriggerStay(Collider other)
{
spawnposition = transform.collider.ClosestPointOnBounds(other.transform.position);
SparksPool.sprkpool.spawnSparks(spawnposition);
}
}
When the rigidbody is moving inside of the trigger the particles are spawned correctly (visually and according the hierarchy window). But duplicate (clones with the same angles and spawn times) particles are spawned behind the movement axis (i.e. car is moving along the x+ axis - clones spawn behind the car; moving along x- axis - spawn in front), which are not drawn from the pool and are not showing in the editor window. Basically they can be seen only in the game.
What could be the cause of this? And how can I fix it? Thanks.