the sound will not play

Hi, please guys, i am frustrated, i work over 3 days… i have two objects (rocket and asteroids) every objects have script destruction-collision Code:
public class DestroyByContact2 : MonoBehaviour
{

public GameObject explosion; 

void OnCollisionEnter()
{
    GameObject expl = Instantiate(explosion, transform.position, Quaternion.identity) as GameObject;

    Destroy(gameObject); 
    Destroy(expl, 2); // (expl, delete the explosion after... seconds)

}

}

and now, i have problem create sound explosion…i created new script with name “Sound” and
i inserted his code in to Rocket, his code Code: public class Sound : MonoBehaviour
{
public AudioClip impact;
public AudioSource audioSource;

void Start()
{
    audioSource = GetComponent<AudioSource>();
}

void OnCollisionEnter(Collision collision)
{

    if (collision.gameObject.tag == "Asteroids")
    {

        audioSource.PlayOneShot(impact, 0.7F);

    }

}

}
i have something bad? My goal is, when rocket crash into asteroids so it is created explosion with sound explosion.

probably the asteroids are far away from thje camera and the sound is not being heared? try this code

AudioSource.PlayClipAtPoint(impact, new Vector3(0, 0, Camera.main.transform.position));

Destroy(gameObject);
Destroy(expl, 2); // (expl, delete the explosion after… seconds)

Nothing to do with your problem but if you destroy this.gameObject then it’ll never Destroy the expl gameObject.