I have been working on an endless runner game. The platforms/chunks of the game are set to spawn as the player moves forward. But right now only one platform length (hardcoded) can be used. If I am to see different length platforms overlapping or gaps occur. how to get past this? thanks!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TileManager : MonoBehaviour
{
public GameObject[] tilePrefabs;
private Transform playerTransform;
private float spawnZ = -300.0f;
private float tileLength = 150.0f;
private int tilesOnScreen = 7;
private int lastPrefabIndex = 0;
void Start()
{
playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
for (int i = 0; i < tilesOnScreen; i++)
{
if (i < 3)
{
SpawnTile(0);
}else{
SpawnTile();
}
}
}
void Update()
{
if(playerTransform.position.z > (spawnZ - tilesOnScreen * tileLength))
{
SpawnTile();
}
}
void SpawnTile(int prefabIndex = -1)
{
GameObject go;
if(prefabIndex == -1)
{
go = Instantiate (tilePrefabs[RandomPrefabIndex()]) as GameObject;
}
else
{
go = Instantiate (tilePrefabs[prefabIndex]) as GameObject;
}
go.transform.SetParent(transform);
go.transform.position = Vector3.forward * spawnZ;
spawnZ += tileLength;
}
private int RandomPrefabIndex()
{
if (tilePrefabs.Length <= 1)
return 0;
int randomIndex = lastPrefabIndex;
while(randomIndex == lastPrefabIndex)
{
randomIndex = Random.Range(0,tilePrefabs.Length);
}
lastPrefabIndex = randomIndex;
return randomIndex;
}
}