private void Start() { for (int i = 0; i <= size; i++) { GameObject SS; if (i == 0) { SS = Instantiate(s_SpawnShape[Random.Range(0, s_SpawnShape.Count)]); starting_SS = SS; } else { Vector3 previos_Cube_Pos = s_Maze[i - 1].transform.position;//get last cube pos if (x_Axis <= 4) { Vector3 new_Cube_Pos; SS = Instantiate(s_SpawnShape[Random.Range(0, s_SpawnShape.Count)]); if (SS.GetComponent <Renderer>()) { //x is center of box new_Cube_Pos = new Vector3(previos_Cube_Pos.x + SS.GetComponent <Renderer>().bounds.size.x, previos_Cube_Pos.y, previos_Cube_Pos.z);//set current cube spawning pos } else { new_Cube_Pos = new Vector3(previos_Cube_Pos.x + 1, previos_Cube_Pos.y, previos_Cube_Pos.z);//set current cube spawning pos } SS.transform.position = new_Cube_Pos; x_Axis++; } else { y_Axis++; Vector3 new_starting_SS = new Vector3(starting_SS.transform.position.x, starting_SS.transform.position.y + y_Axis, starting_SS.transform.position.z); SS = Instantiate(s_SpawnShape[Random.Range(0, s_SpawnShape.Count)], new_starting_SS, Quaternion.identity); x_Axis = 0; } } s_Maze.Add(SS); } }