Prevent an audio source from playing a clip until the previous clip is finished.
Hey everyone. I'm creating a survival shooter game but I am having an issue when triggering sounds for an enemy getting hurt. I've scripted it that when the enemy takes damage, one of three random audio clips from an array will play. I've tried to script it so that a clip will not play if the previous one is still playing (to prevent it from continuously cutting off the previous clip and playing the next one every time they are hit), but it is not working. I'm relatively new to coding so I apologize if there is a simple mistake I am overlooking, but I have not found a solution in my research so far.
I've posted the relevant code below.
public AudioClip [] hurtSounds;
AudioSource enemyAudio;
void Awake ()
{
enemyAudio = GetComponent <AudioSource> ();
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
enemyAudio.clip = hurtSounds[Random.Range (0,2)];
if (!enemyAudio.isPlaying)
{
enemyAudio.Play ();
}
}
Thank you in advance!
Consider booleans. Look at $$anonymous$$balochs answer here: http://answers.unity3d.com/questions/904981/how-to-play-an-audio-file-after-another-finishes.html
Sorry if im not understanding it completely. Do you not want another sound to play when he gets hit if one is playing or you want the current to stop and a new hurt sound to play everytime hes hit. If you want it to stop and a new one play can't you just add a enemyAudio.Stop() to a enemyAudio.isplaying if statement to the top of the TakeDamage method to make it stop and go through again?
Your answer
Follow this Question
Related Questions
Audio or Music continuing to play between scenes 1 Answer
Change Audio Mixer through script for every scene 0 Answers
Can't play shoot sound 0 Answers
Newbie with OnTriggerEnter & Audio Files 0 Answers
Audio Endless Loop c# 1 Answer