AwesomeRunner/Assets/Scripts/Road/ChunkSpawner.cs
VladimirPirozhenko 9067758171 Extracted code to Grid class, adjusted jump time to get better game feel
Also fixed scaling of score ui element
2022-08-14 06:14:54 +03:00

51 lines
1.1 KiB
C#

using System;
using System.Collections;
using UnityEngine;
public class ChunkSpawner : MonoBehaviour // TODO: ISpawner
{
[SerializeField] private float spawnDelay;
[SerializeField] private ChunkGenerator chunkGenerator;
[SerializeField] private ChunkPool chunkPool;
private Chunk lastChunk;
private WaitForSeconds waitBeforeSpawn;
private void Start()
{
waitBeforeSpawn = new WaitForSeconds(spawnDelay);
SpawnInitialChunks();
}
public void SpawnInitialChunks()
{
lastChunk = chunkPool.GetFromPool();
for (int i = 0; i < chunkPool.Capacity / 2; i++)
{
Spawn();
}
}
public void Spawn()
{
Chunk newChunk = chunkPool.GetFromPool();
newChunk.ChangeTransformBasedOnPreviousChunk(lastChunk);
chunkGenerator.Generate(newChunk);
lastChunk = newChunk;
}
public void DelayedReturnToPool(Chunk chunk)
{
StartCoroutine(ReturnToPool(chunk));
}
public IEnumerator ReturnToPool(Chunk chunk) //EVENT
{
yield return waitBeforeSpawn;
chunkPool.ReturnToPool(chunk);
}
}