- Home /
How to create endless terrain...
Hi ... i am developing an endless running game.. i used the follow script to make an endless track(road). which works like 1st prefab(roadPrefab) end 2nd start(creates prefab of road depends on you , at private int numberofroads make it 2,3,5). 2nd end 1st again start .. linklist... now whats happening, its just an endless road.. i want environment around the road... if i add cars building as a child of my road.. it instantiate them with the road but the game get slow.. i think its because instantiating prefab with much size .. and if i remove buildings it doesn't slows down neither make any jerk....i think in the game like subway surfer , minnion rush, temple run etc they create terrains of different scenes and then attach them ... i don't know... i doesn't making me sense .. :( .. my collisions are working ,power ups etc .. now i am stuck here which i should have done in the very beginning ... :'( ... and my road moves towards the player and player remains on the x axis... kindly help please ..
using UnityEngine;
using System.Collections.Generic;
public class MoveRoad : MonoBehaviour {
public Transform prefab;
//bool flag;// this is for boolean controlling the oncollision stop the road movement
private LinkedList<Transform> roads = new LinkedList<Transform>();
private float posY = 0.0f;
private int numberOfRoads = 5;
// Use this for initialization
void Start () {
// Init the scene with some road-pieces
for(int i=0;i < numberOfRoads;i++) {
Transform road = Instantiate(prefab) as Transform;
road.Translate(0, posY, i * road.localScale.z);
roads.AddLast(road);
}
}
// Update is called once per frame
void Update ( ) {
Transform firstRoad = roads.First.Value;
Transform lastRoad = roads.Last.Value;
// Create a new road if the first one is not
// in sight anymore and destroy the first one
if(firstRoad.localPosition.z < -40f) {
roads.Remove(firstRoad);
Destroy(firstRoad.gameObject);
Transform newRoad = Instantiate(prefab, new Vector3(0, posY ,
lastRoad.localPosition.z + lastRoad.localScale.z),
Quaternion.identity) as Transform;
roads.AddLast(newRoad);
}
// Move the available roads along the z-axis
// if(!flag)
// {
foreach(Transform road in roads) {
road.Translate(0,0, -25f * Time.deltaTime);
// }
//flag = false;
}
}
}
Your answer
Follow this Question
Related Questions
Endless Running game random generator ? 3 Answers
Searching for free .raw Heightmaps 0 Answers
Sketchup Buildings in Unity 2 Answers
How do I generate an omnidirectional 2d terrain? 0 Answers
Create an unlimited terrain 2 Answers