Instantiate/Spawn projectile from array with 0.2 time delay between.

Hi guys atm I have it like this which I think is probably not the way to go.

IEnumerator shootProjectile() {
		timer = 0;
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos1.transform.position, pos1.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos1.transform.position, pos1.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos5.transform.position, pos5.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos5.transform.position, pos5.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos2.transform.position, pos2.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos2.transform.position, pos2.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos6.transform.position, pos6.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos6.transform.position, pos6.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos3.transform.position, pos3.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos3.transform.position, pos3.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos7.transform.position, pos7.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos7.transform.position, pos7.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos3.transform.position, pos4.transform.rotation);	
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos4.transform.position, pos4.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos8.transform.position, pos8.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos8.transform.position, pos8.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos9.transform.position, pos9.transform.rotation);	
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos9.transform.position, pos9.transform.rotation);
		
		yield return new WaitForSeconds(0.2);
		
		audio.PlayOneShot(boomNoise);
		PoolManager.Pools["Bullets"].Spawn(tankShell.transform, pos10.transform.position, pos10.transform.rotation);
		PoolManager.Pools["Effects"].Spawn(bangFX.transform, pos10.transform.position, pos10.transform.rotation);
		
		yield break;
	}
}

I am thinking using an array or list may be better but not sure how it would work.

Any ideas?

Thanks.

Here you go.

List<Transform> shotPositions = new List<Transform>();
IEnumerator shootProjectile() 
{
    timer = 0;
    int index = 0;
	while(index < 10)
	{
		audio.PlayOneShot(boomNoise);

	    PoolManager.Pools["Bullets"].Spawn(tankShell.transform, shotPositions[index].position, shotPositions[index].rotation);

	    PoolManager.Pools["Effects"].Spawn(bangFX.transform, shotPositions[index].position, shotPositions[index].rotation);
	    index++;
	    yield return new WaitForSeconds(0.2f)
	}
}

*Edit – Sorry forgot the index counter and declaration.

Thanks it worked.