Sound on collision not working

Hi,
i am using this script:

var crashSound : AudioClip; // set this to your sound in the inspector

function OnCollisionEnter (collision : Collision) {
    // next line requires an AudioSource component on this gameobject
    audio.PlayOneShot(crashSound); 

}

OK, so what i did is when my Player (tagged as player) collides with this object which is a sphere is should create a sound. Sound does not get played i tried searching form many scripts but still no luck out here. I did put an audio source to my sphere and audio listener to the camera and also tries attaching this script to my player as-well but sound doesn’t get played. This script was found in other question.

If your player is a CharacterController (like the First Person Controller prefab, for instance), this won’t work: collisions rigidbody->characterController generate OnCollision events in the rigidbody script, but collisions characterController->rigidbody don’t.

Collisions follow some schizophrenic rules - specially when a character controller is colliding with something else. The usual collision event associated to character controllers is OnControllerColliderHit, but the event is generated only in the CC script - and it happens all the time due to collisions CC->ground.

If the only purpose is to generate a sound when the player hits the sphere, you could make the sphere collider a trigger (check Is Trigger in the Inspector) and use OnTriggerEnter:

var crashSound : AudioClip; // set this to your sound in the inspector

function OnTriggerEnter (other: Collider) {
  // next line requires an AudioSource component on this gameobject
  audio.PlayOneShot(crashSound); 
}

The only problem here is that the CC could pass through the sphere, since triggers are “transparent” from the collision point of view. A simple solution would be to create another sphere a little smaller and place it at the same position: the CC would be detected by the bigger trigger, but could not pass through the smaller collider.

NOTE: The CC must penetrate the trigger deep enough to be detected, thus the trigger must be about 0.2 to 0.4 units larger than the internal collider.