Exemple #1
0
    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;
        }
    }