public void CreateNextObstacle(float prevY) { GameObject newObstacle; int obsType = 1; if (SelectedLevelScript.selectedLevel == 1) { obsType = obstTypeLvl1[obstacleIndex]; } else if (SelectedLevelScript.selectedLevel == 2) { obsType = obstTypeLvl2[obstacleIndex]; } else if (SelectedLevelScript.selectedLevel == 3) { obsType = obstTypeLvl3[obstacleIndex]; } else if (SelectedLevelScript.selectedLevel == 4) { obsType = obstTypeLvl4[obstacleIndex]; }else if (SelectedLevelScript.selectedLevel == 5) { obsType = obstTypeLvl5[obstacleIndex]; } // Create correct type of obstacle if(obsType == 0) newObstacle = (GameObject) GameObject.Instantiate(Resources.Load("Obstacle_green", typeof(GameObject))); else newObstacle = (GameObject) GameObject.Instantiate(Resources.Load("Obstacle_red", typeof(GameObject))); // Set id ObstacleScript obsScript = (ObstacleScript) newObstacle.GetComponent(typeof(ObstacleScript)); if (obsScript) { obsScript.id = obstacleCount; } //calculate position float obsDist = 0; float obsAmount = 0; int obsSide = 0; float freeSpace = 0; if (SelectedLevelScript.selectedLevel == 1) { obsDist = obstDistanceLvl1[obstacleIndex]; obsAmount = obstAmountLvl1[obstacleIndex]; obsSide = obstSideLvl1[obstacleIndex]; freeSpace = (0.1f+0.6f*(obsAmount / 100)) * BackgroundScript.stage_bounds.size.x; } else if (SelectedLevelScript.selectedLevel == 2) { obsDist = obstDistanceLvl2[obstacleIndex]; obsAmount = obstAmountLvl2[obstacleIndex]; obsSide = obstSideLvl2[obstacleIndex]; freeSpace = (0.1f + 0.5f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x; } else if (SelectedLevelScript.selectedLevel == 3) { obsDist = obstDistanceLvl3[obstacleIndex]; obsAmount = obstAmountLvl3[obstacleIndex]; obsSide = obstSideLvl3[obstacleIndex]; freeSpace = (0.1f + 0.45f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x; } else if (SelectedLevelScript.selectedLevel == 4) { obsDist = obstDistanceLvl4[obstacleIndex]; obsAmount = obstAmountLvl4[obstacleIndex]; obsSide = obstSideLvl4[obstacleIndex]; freeSpace = (0.1f + 0.45f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x; } else if (SelectedLevelScript.selectedLevel == 5) { obsDist = obstDistanceLvl5[obstacleIndex]; obsAmount = obstAmountLvl5[obstacleIndex]; obsSide = obstSideLvl5[obstacleIndex]; freeSpace = (0.1f + 0.40f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x; } if (SelectedLevelScript.selectedLevel == 1 && iteration < 1 && obstacleIndex < 40) { if (freeSpace < 4.5f) freeSpace = 4.5f; } else if (iteration > 3) { if (freeSpace < 3f) freeSpace = 3f; } else { if (freeSpace < 4f) freeSpace = 4f; } float max_speed = CarScript.getMaxSpeed(); if (SelectedLevelScript.selectedLevel == 1) { max_speed = 250 + CarScript.score / 2.0f; if (max_speed > 400) max_speed = 400; } else if (SelectedLevelScript.selectedLevel == 2) { max_speed = 300 + CarScript.score / 2.0f; if (max_speed > 450) max_speed = 450; } else if (SelectedLevelScript.selectedLevel == 3) { max_speed = 360 + CarScript.score / 2.0f; if (max_speed > 500) max_speed = 500; } else if (SelectedLevelScript.selectedLevel == 4) { max_speed = 420 + CarScript.score; if (max_speed > 600) max_speed = 600; } else if (SelectedLevelScript.selectedLevel == 5) { max_speed = 510 + CarScript.score; if (max_speed > 700) max_speed = 700; } CarScript.setMaxSpeed (max_speed); float x_pos; if (obsSide == 0) { x_pos = BackgroundScript.stage_bounds.max.x - freeSpace - newObstacle.collider2D.bounds.size.x/2; } else { x_pos = BackgroundScript.stage_bounds.min.x+freeSpace+newObstacle.collider2D.bounds.size.x/2; } float y_space = obsDist / 12f; if (y_space < 4.5f) y_space = 4.5f; float y_pos = prevY+y_space; if (obstacleIndex == 0) y_pos += 4; newObstacle.transform.position = new Vector3(x_pos,y_pos,0); obstacleIndex++; obstacleCount++; if (obstacleIndex > 99) { obstacleIndex = 0; iteration++; } }