Esempio n. 1
0
    // Update is called once per frame

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (!(other.transform == car.transform))
        {
            return;
        }
        if (other.CompareTag("Player"))
        {
            if (Vector3.Distance(other.transform.position, p1.transform.position) <
                Vector3.Distance(other.transform.position, p2.transform.position))
            {
                Debug.Log("Facing wrong");
                car.parameters = evo.RandomizeParams();
                //car.LoadValues();
                //car.DieAndReset();
                car.EndRaceAndMutate(evo.Mutate2(car.parameters));
                sm.CarDied();
                car.parameters.completesTrack = false;
                //		smthHappened.Invoke(car.parameters);
                return;
            }

            timeToComplete = (Time.time - startingTime) * Time.timeScale;
            if (timeToComplete < 1f)
            {
                car.parameters = evo.RandomizeParams();
                //car.LoadValues();
                //car.DieAndReset();
                car.EndRaceAndMutate(evo.Mutate2(car.parameters));
                car.parameters.completesTrack = false;
                sm.CarDied();
                //		smthHappened.Invoke(car.parameters);
                return;
            }

            car.parameters.timeToComplete = timeToComplete;
            startingTime = Time.time;
            car.parameters.completesTrack = true;
            sm.CarReached(timeToComplete);
            //	smthHappened.Invoke(car.parameters);
            car.EndRaceAndMutate(evo.Mutate2(car.parameters));
        }
    }