[Help]Infinit 2d terrain script help

Hello, im am having trouble with a script to create a world “infinity”, my idea is this: I have an object “World” (consisting of a square RagePixel sprite), I want to clone this world to the right or left depending whether the player is on the left or right side of the world, this would serve to generate a kind of infinite world (like that of Cortex Command, where if you run always to one side, back to the place you came from, as if you round the world). I have the script, but for some reason I make infinite objects. I think it is because control ignores “pasaDeLado ()” but I’m not 100% sure. Hope you can help, thank you very much! !

using UnityEngine;
using System.Collections;

public class CreacionPlaneta : MonoBehaviour 
{
	public float ladoDelPlaneta;
	public float posicionJugador;
	public int contadorPasarMapa=0;
	public float tamanioMapa;
	public float posicionRelativaJugador;
	public bool mapNuevo = false;
	public float posicionPlaneta;
	public GameObject[] arregloPlaneta = new GameObject[1];
	public Vector3 nuevaPosicion;
	public float ladoDelPlanetaAntes = 1;
	public GameObject nuevoPlaneta;
	public string i1 = "nada";
	public string ladoPlaneta = "nada";
	public string ladoPlanetaAntes = "nada";
	public string posRelativaJug = "nada";
	public string pasoMapa = "nada";
	public string i2 = "nada";


	void Start () 
	{
		tamanioMapa = this.gameObject.renderer.bounds.size.x;
		posicionRelativaJugador = posicionJugador;
		posicionPlaneta = this.transform.position.x;
		ladoDelPlaneta = deQueLadoEsta();
		ladoDelPlanetaAntes = 0;
		generarPlaneta();
		creoLado(ladoDelPlaneta);
	}

	void Update () 
	{
		ladoDelPlaneta = deQueLadoEsta();
		posicionRelativaJugador = (posicionJugador - (contadorPasarMapa*tamanioMapa));
		ladoPlaneta = ladoDelPlaneta.ToString();
		ladoPlanetaAntes = ladoDelPlanetaAntes.ToString();
		posRelativaJug = posicionRelativaJugador.ToString();
		pasoMapa = sePasoDeMapa().ToString();
		if(!sePasoDeMapa())
		{
			i1 = "in(!sePasoDeMapa())";
			if(pasaDeLado())
			{
				i1 = "in(pasaDeLado())";
				borroLadoContrario();
				creoLado(ladoDelPlaneta);
			}
		}
	
	}


	//Este metodo se va a fijar si el jugador pasa de un lado a otro
	bool pasaDeLado()
	{
		if(ladoDelPlaneta != ladoDelPlanetaAntes)
		{
			return true;
		}
		else
		{
			return false;
		}
	
	}
	//------------------------------
	
	//Duplica el mapa del lado que esta el jugador
	void creoLado(float ladoDelPlaneta)
	{
		if(ladoDelPlaneta == 0)
		{
			//Creo para la izquierda
			this.nuevaPosicion.x = (this.transform.position.x - (tamanioMapa/2));
			this.nuevoPlaneta = (GameObject)Instantiate( this.gameObject, nuevaPosicion, transform.rotation);
			this.arregloPlaneta[1] = this.nuevoPlaneta;
			this.ladoDelPlanetaAntes=this.ladoDelPlaneta;
		}
		else
		{
			//Creo para la derecha
			this.nuevaPosicion.x = (this.transform.position.x + (tamanioMapa/2));
			this.nuevoPlaneta = (GameObject)Instantiate( this.gameObject, nuevaPosicion, transform.rotation);
			this.arregloPlaneta[1] = this.nuevoPlaneta;
			this.ladoDelPlanetaAntes=this.ladoDelPlaneta;
		}
	}
	//------------------------------
	
	//Borra el mapa del lado que no esta el jugador
	void borroLadoContrario()
	{
		Destroy(this.arregloPlaneta[1]);
		i2 = "EntroBorrar";
	}
	//------------------------------
	
	//Crea por primera vez el planeta
	void generarPlaneta()
	{
		arregloPlaneta[0] = this.gameObject;
	}
	//------------------------------
	
	//Este metodo va a cambiar de lugar los mapas, hacienod que el que era copia sea el principal
	void cambiarDeMapa()
	{
		GameObject aux;
		aux = arregloPlaneta[0];
		arregloPlaneta[0] = arregloPlaneta[1];
		arregloPlaneta[1]=aux;
	}
	//------------------------------
	
	//Este metodo dice si se paso de un mapa al otro
	bool sePasoDeMapa()
	{
		if( posicionRelativaJugador < 0 )
		{
			contadorPasarMapa -= contadorPasarMapa;
			cambiarDeMapa();
			return true;
		}
		else if (posicionRelativaJugador >= tamanioMapa)
		{
			contadorPasarMapa += contadorPasarMapa;
			cambiarDeMapa();
			return true;
		}
		else 
		{
			return false;	
		}
	}
	//------------------------------.

	//Este método va a indicar de que lado del planeta se encuentra el personaje
	int deQueLadoEsta()
	{
		if(posicionRelativaJugador <= tamanioMapa/2)
		{
			//entonces esta del lado izquierdo
			return 0;
		}
		else
		{
			//entonces esta del lado derecho
			return 1;
		}
	}
	//------------------------------

}

Anyone ?