Проблема в том, что AudioSource
прикреплен к игровому объекту, который был уничтожен сразу после обнаружения столкновения, поэтому вы никогда не услышите звук. Одним из возможных решений может быть задержка уничтожения игрового объекта путем указания количества секунд, на которое вы хотите задержать уничтожение, например, задержка на 0,5 секунды.
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Rocks")
{
source.Play();
PlayExplosionAnimation();
Destroy(gameObject, 0.5);
}
}