// 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)); } }