void OnCollisionEnter(Collision collision) { GameObject other = collision.collider.gameObject; if (other.tag != "Ground") { GetComponent <AudioSource>().PlayOneShot(crashNoise_); } if (purpose_ && purpose_.enabled) { purpose_.SoundHorn(); } if (tag == "Player") { return; } if (collision.relativeVelocity.magnitude > car_.GetMaxSpeed() * 0.25f) { car_.SetState(CarState.CS_CRASHED); } else { if (purpose_.enabled) { car_.MoveAwayFrom(other); purpose_.SetParkingChance(101.0f); } } if (other.tag == "Car" || other.tag == "Player") { //make sure only one car registers the event if (car_.DistanceToTarget() > other.GetComponent <Car>().DistanceToTarget()) { eventSender_.SendEvent(TrafficEvent.TE_COLLISION); } if (error_) { car_.SetState(CarState.CS_MOVING, true); } } //prevent the car from locking up if (tag == "Player") { car_.Brake(0); car_.Accelerate(0); body_.velocity *= 0.1f; } }