Audio not playing when destroying a GameObject.
I'm trying to create a setup where a sound plays upon firing a bullet, and a different sound plays when the bullet despawns. I can hear the first sound perfectly when the bullet fires but the second one never plays, despite the Debug.Log() I used showing that the function has been successfully run.
I've checked to make sure the sound itself plays in Unity by replacing both sounds with the one that doesn't work. As before, the sound plays perfectly upon firing but is completely silent when the bullet despawns.
If anyone would be able to help I would be really grateful!
using UnityEngine;
using System.Collections;
public class ShellPhysics : MonoBehaviour
{
private TankShooting tankShooting;
public int playerNumber;
public float bulletLifetime = 5f; // the lifetime (in seconds) of a bullet when it is fired
https://answers.unity.com/questions/ask.html?space=8#
public AudioSource bulletAudioSource;
public AudioClip bulletFired;
public AudioClip bulletDespawn;
private void Start()
{
// find the correct tank model that fired the bullet, and reference its TankShooting script
tankShooting = GameObject.FindGameObjectWithTag ("Player" + playerNumber).GetComponent<TankShooting> ();
bulletAudioSource.clip = bulletFired;
bulletAudioSource.Play ();
// begin the "bulletLife" coroutine to handle the destruction of the bullet
StartCoroutine ("bulletLife");
}
IEnumerator bulletLife()
{
tankShooting.incrementBulletCount (-1);
yield return new WaitForSeconds (bulletLifetime);
destroyBullet ();
}
public void destroyBullet() {
tankShooting.incrementBulletCount (1);
bulletAudioSource.clip = bulletFired;
bulletAudioSource.Play ();
Debug.Log ("Played despawn sound.");
Destroy (this.gameObject);
}
}
Answer by BrandonD · Apr 14, 2018 at 07:38 PM
If the audio source is attached to the same game object, you may be destroying it when you despawn the bullet. To rectify this, you could destroy the object after the sound was finished playing, or spawn a new object in the same location which only exists to play the sound and then destroy itself.
I think that second option sounds like what I'll need to do. Will give it a shot and report back, thanks!
Your answer
Follow this Question
Related Questions
Precise metronome problem 1 Answer
Stop Audio Source Clip while button Press 1 Answer
can i make a loop for each with all audiosources of my project ? 0 Answers
Second AudioClip won't play 0 Answers
Newbie with OnTriggerEnter & Audio Files 0 Answers