void Start() { player = gameObject.transform.parent.GetComponentInChildren<Player>(); //let's create the player items = new Items(); characters = new Characters(); if (items.LoadItems() && characters.LoadCharacters()) { prefab = Resources.Load(characters.GetCharacter("Guy").GetDirectory(), typeof(GameObject)); PlayerObject = Instantiate(prefab) as GameObject; PlayerObject.transform.position = new Vector3(0, 0.5f, 0); PlayerObject.transform.SetParent(gameObject.transform.parent.FindChild("PlayerObject").transform); for (int i = -4; i <= 4; i++) //initial 8 tiles { int rand = Random.Range(0, 2); item = items.GetItem(TilesArray[rand]); prefab = Resources.Load(item.GetDirectory(), typeof(GameObject)); ObjectI = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject; ObjectI.transform.position = new Vector3(i * 9, 0, 0) + item.GetBasePosition(); ObjectI.transform.SetParent(gameObject.transform.FindChild("Tiles").transform); tiles.Add(ObjectI); } } }
// Update is called once per frame void Update() { lastRoad = tiles[tiles.Count - 1]; distance = lastRoad.transform.position - GetPlayer().position; if(distance.x <= 30) { int rand = Random.Range(0, 2); item = items.GetItem(TilesArray[rand]); prefab = Resources.Load(item.GetDirectory(), typeof(GameObject)); ObjectI = Instantiate(prefab) as GameObject; ObjectI.transform.position = new Vector3(lastRoad.transform.position.x + 9, 0, item.GetBasePosition().z); ObjectI.transform.SetParent(gameObject.transform.FindChild("Tiles").transform); tiles.Add(ObjectI); //let's add obstacles to this tile player = gameObject.transform.parent.GetComponentInChildren<Player>(); if (player != null && player.started == true) { int obstaclesCount = Random.Range(1, 2); //1 to 2 int[] separations = { -3, 0, 3 }; for (int k = 1; k <= obstaclesCount; k++) { string obstacleName = ObstaclesArray[Random.Range(0, ObstaclesArray.Length)]; item = items.GetItem(obstacleName); basePosition = ObjectI.transform.position; obstaclePosition = new Vector3(basePosition.x, 0, 0) + item.GetBasePosition() + new Vector3(separations[(int)Random.Range(0, 3)], 0, separations[(int)Random.Range(0, 3)]); prefab = Resources.Load(item.GetDirectory(), typeof(GameObject)); ObstacleObject = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject; ObstacleObject.transform.position = obstaclePosition; ObstacleObject.transform.SetParent(gameObject.transform.FindChild("Obstacles").transform); obstacles.Add(ObstacleObject); } } } //let's delete roads outside of camera foreach(GameObject it in tiles) { distance = GetPlayer().position - it.transform.position; if(distance.x >= 20 && GetPlayer().position.x > it.transform.position.x && tiles.Count > 9) { Destroy(it); tiles.Remove(it); break; } } foreach(GameObject it in obstacles) { distance = GetPlayer().position - it.transform.position; if (Mathf.Abs(distance.x) >= 30 && GetPlayer().position.x > it.transform.position.x) { Destroy(it); obstacles.Remove(it); break; } } }