Question by
EnderSkelly34 · Jun 15, 2020 at 09:34 AM ·
c#gamegenerationtiletiles
Why won't my random tile generator not working??
I have a random tile generator for my unity game. It is a simple infinite game where 10x10 tiles generate and you have to dodge the obstacles. (3D runner)
For some reason, anytime I play, sometime it disrupts the player's cube (That's what the player is, a cube) and they go haywire. Also when I need to generate tiles it doesn't, except for at the last second, but it is too late. I have already fallen off. Is there any way you can help me? Thanks!
Here is my script (I use C#):
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class FileManager : MonoBehaviour { public GameObject[] tilePrefabs;
private Transform playerTransform;
private float spawnZ = -5f;
private float tileLength = 10.0f;
private int amtOfTilesOnScreen = 8;
private float safeZone = 15.0f;
private int lastPrefabIndex = 0;
private List<GameObject> activeTiles;
private void Start()
{
activeTiles = new List<GameObject>();
playerTransform = GameObject.FindGameObjectWithTag ("Player").transform;
for (int i = 0; i < amtOfTilesOnScreen; i++)
{
if (i < 2)
{
SpawnTile(0);
}
else
{
SpawnTile();
}
}
}
// Update is called once per frame
private void Update()
{
if (playerTransform.position.z - safeZone > (spawnZ = amtOfTilesOnScreen * tileLength))
{
SpawnTile();
DeleteTile();
}
}
private 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;
activeTiles.Add (go);
}
private void DeleteTile()
{
Destroy(activeTiles[0]);
activeTiles.RemoveAt(0);
}
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;
}
}
Comment