Пример #1
0
    public void StartNextGeneration()
    {
        // Сортировка бесполезных мозгов
        //CheckUselessBrains();

        // Процедура естественного отбора и размножения
        NaturalSelection();

        // Процедура выключения симуляции по времени или по поколению
        SelfDestruct();

        // Респавн препятствий
        if (generateObsNextGen)
        {
            sectorPosMap.Clear();
            //obsGenerator.Start();
            obsGenerator.SpawnObstacles(Vector3.zero);
            sectorPosMap.Add(Vector3.zero);
            generateObsNextGen = false;
            enableGenerateObs  = true;
        }

        // Сброс всех машин
        ResetCars();

        // Сброс положения конечной точки
        //ResetTarget(true);

        startOfLastGeneration = Time.time;
        generationNumber++;
        // Вывод номера поколения
        GameObject.Find("Canvas/Generation/Text").GetComponent <Text>().text = "Поколение: " + generationNumber;
    }
Пример #2
0
 // @todo need to implement the lvl argument
 public void LevelBegin(int lvl = 1)
 {
     lvlDisplay.SetLevel(currLevel);
     /*obstacleManager.numObstacles = (int)Mathf.Min((float)currLevel, (float)maxObstacles);*/
     obstacleManager.SpawnObstacles();
     enemyManager.Launch();
     ballManager.Enable();
 }
Пример #3
0
    //////////////////////////////////////////////////////////////////////////////////////////////////
    void Start()
    {
        Time.timeScale = 0;

        // Инициализация
        obsGenerator = this.GetComponent <ObstacleGenerator>();
        ImportSettings();
        scoreList   = new int[scaleOfGeneration];
        infoManager = bigBrother.GetComponent <InformationManager>();

        // Инициализация записи статистики
        statPath = infoManager.StatInit();

        // Начальный спаун препятствий
        sectorPosMap = new List <Vector3>();
        if (generateObsNextGen)
        {
            obsGenerator.Start();
            obsGenerator.SpawnObstacles(Vector3.zero);
            sectorPosMap.Add(Vector3.zero);
            generateObsNextGen = false;
            enableGenerateObs  = true;
        }
        obsGenerator.Start();

        // Сброс положения конечной точки
        ResetTarget(targetInCentre);

        // Спаун машин и инициализация вспомогательных переменных
        car         = new List <GameObject>();
        brain       = new Brain[scaleOfGeneration];
        prevPos     = new Vector3[scaleOfGeneration];
        prevRot     = new Vector3[scaleOfGeneration];
        radVectM    = new float[scaleOfGeneration];
        maxRadVectM = new float[scaleOfGeneration];
        maxScore    = new int[scaleOfGeneration];
        travelDists = new float[scaleOfGeneration];
        fullRotats  = new float[scaleOfGeneration];
        for (int i = 0; i < scaleOfGeneration; i++)
        {
            travelDists[i] = 0;
            fullRotats[i]  = 0;
            radVectM[i]    = 0;
            maxRadVectM[i] = 0;
            maxScore[i]    = 0;
            prevPos[i]     = Vector3.zero;
            prevRot[i]     = Vector3.zero;
            car.Add((GameObject)Instantiate(sampleCar, Vector3.up, Quaternion.identity));
            brain[i] = car[i].transform.GetChild(3).GetComponent <Brain>();
            brain[i].BrainInit();
        }
    }