private EnumObstacles GetObstacleType(int _count) { //TODO: if (_count == 1) { return(EnumObstacles.Horizontal); } else if (_count == 2) { //Шанс генерации особых объектов var specObstacle = GenerateSpecObstacle(); if (specObstacle != EnumObstacles.NA) { return(specObstacle); } //Обычная генерация var types = new EnumObstacles[] { EnumObstacles.Small, lastObstacle == EnumObstacles.Horizontal ? EnumObstacles.Horizontal : EnumObstacles.Small, EnumObstacles.Small, }; return(types.GetRandom()); } else //(_count > 2) { //Шанс генерации особых объектов var specObstacle = GenerateSpecObstacle(); if (specObstacle != EnumObstacles.NA) { return(specObstacle); } //Обычная генерация var types = new EnumObstacles[] { EnumObstacles.Small, }; return(types.GetRandom()); } }
private void Spawn() { //Кол-во за раз lastBorderIndexes.Clear(); var count = GetSpawnerCount(); for (int i = 0; i < count; i++) { //Тип var obstacleType = GetObstacleType(count); lastObstacle = obstacleType; GameObject usingPref = obstaclesSmall.GetRandom(); switch (obstacleType) { case EnumObstacles.Small: usingPref = obstaclesSmall.GetRandom(); break; case EnumObstacles.Horizontal: usingPref = obstaclesHorizontal.GetRandom(); break; //case EnumObstacles.Vertical: // usingPref = obstacleVertical; // break; case EnumObstacles.Time: usingPref = obstacleTime; break; case EnumObstacles.Money: usingPref = obstacleMoney; break; case EnumObstacles.HP: usingPref = obstacleHP; break; } Instantiate(usingPref, GetObstaclePosition(), usingPref.transform.rotation, transform); } }