Exemple #1
0
    private void CalculateFitnessFromCheckpoint(FitnessCheckpoint fitnessCheckpoint)
    {
        int checkpointIndex     = fitnessCheckpoint.CheckpointIndex;
        int lastCheckpointIndex = FitnessCheckpoint.LastCheckpointIndex;

        if (lastPassedCheckpointIndex == checkpointIndex)
        {
            return;
        }
        else if (lastPassedCheckpointIndex == checkpointIndex - 1 ||                       // Moving forward to higher indexed checkpoint.
                 lastPassedCheckpointIndex == lastCheckpointIndex && checkpointIndex == 0) // Moving forward from last to first checkpoint.
        {
            fitness            += 500;
            passedNewCheckpoint = true;
            if (fitnessAnimator.gameObject.activeInHierarchy)
            {
                fitnessAnimator.Play("FitnessUpdate", 0, 0);
            }
            fitnessCheckpoint.ReactToTouchedCar(crashedCarMaterial.GetColor("_BaseColor"));
        }
        else if (lastPassedCheckpointIndex == checkpointIndex + 1 ||                       // Moving back to lower indexed checkpoint.
                 checkpointIndex == lastCheckpointIndex && lastPassedCheckpointIndex <= 0) // Moving back from first (or finish line) to last checkpoint.
        {
            fitness            -= 500;
            passedNewCheckpoint = false;
            if (fitnessAnimator.gameObject.activeInHierarchy)
            {
                fitnessAnimator.Play("FitnessUpdate", 0, 0);
            }
            fitnessCheckpoint.PlayTriggerAnimation();
        }

        lastPassedCheckpointIndex = checkpointIndex;
    }
Exemple #2
0
    private IEnumerator StartEvolution()
    {
        // UI & visual effects:
        CarsSelector carsSelector = CarsSelector.Instance;

        carsSelector.SelectionIsAvailable = false;
        carsSelector.ResetSelection();
        GenomeUI.Instance.DrawingGenomeIsAvailable = false;
        MenuController.Instance.ShowEvolutionInfo(true);
        FitnessCheckpoint.ResetColors();

        startDissolveEffectCoroutine = StartCoroutine(StartDissolveEffect());
        yield return(new WaitForSeconds(1));

        // Create new generation:
        carBrainEvolution.StartEvolution(population);
        startEvolutionCoroutine = null;
    }