An alternate way of doing it is to create a long ‘Plane’ 3D object (Scale: X= 50, Y=1, Z=500; Position: 0, Rotation: 0). Let us call it ‘Ground’. Create a green material and apply it to the plane to give it a green landscape look.
Create another plane in the middle (Scale: X=1, Y=1, Z=500; Position: X=0, Y=0.2, Z=0, Rotation: 0). Let us call it ‘Path’. Create a dark-grey material and apply it to the path.
Move the Main Camera (Position: X=0, Y=10, Z=-1809; Rotation: X=20, Y=0, Z=0).
Place a capsule 3D object on the path (Position: X=0, Y=1.5, Z=-1800) and make the Main Camera as the child of the capsule object.
Add three random objects on the path: Cube (Position: X=-3, Y=1.5, Z=-800), Sphere (Position: X=-4, Y=1.5, Z=-1700) and Cylinder (Position: X=3, Y=1.5, Z=-1300)
Add a RigidBody component to the capsule (Check ‘Use Gravity’ and under ‘Constraints > Freeze Rotation’, check X, Y, Z).
Finally, add the following C# code to the capsule object.
public class PlayerBehaviour : MonoBehaviour
// Update is called once per frame
transform.Translate(Vector3.forward * 0.75f);
transform.Translate(Vector3.left * 0.25f);
transform.Translate(Vector3.right * 0.25f);
transform.Translate(Vector3.up * 0.25f);
if (transform.position.z > -700f)
transform.position = new Vector3(transform.position.x, transform.position.y, -2000f);
We can place a lot of random objects on the ‘Ground’ and ‘Path’ and Randomize the environment when transform.position.z > -700f to get a better infinite feel. No need to create new terrain in this case. Just randomize the environment.