- Home /
Sounds looping how to restrict
i want to play a soundclip while holding the space button but there's seems to be a problem. when everytime i hold the space button it plays the soundclip but without finishing the soundclip its already looping itself.
How can i restrict this using script? restrict in the way that it should finish the soundclip first before repeating the clip again?
here's the code that i used:
var jumpsounds:AudioClip; function Update(){ if(Input.GetKey(KeyCode.Space)){ audio.PlayOneShot(jumpsounds); } }
Answer by skovacs1 · Sep 02, 2010 at 07:54 PM
The reason why it keeps playing is that in update, you tell it to play again every frame while the space bar is held down.
One fix is to make it wait the length of the clip before playing again
//You could do this in a co-routine with yield too, but this is fewer lines
var jumpsounds : AudioClip;
private var finishTime : float = Time.time;
function Update(){
if(Input.GetKey(KeyCode.Space) && Time.time >= finishTime) {
finishTime = Time.time + jumpsounds.length;
audio.PlayOneShot(jumpsounds);
}
}
another fix is to let Unity take care of the looping
var jumpsounds : AudioClip;
//If you care about the previous settings
private var oldClip : AudioClip;
private var wasLooping : boolean;
function Update(){
if(Input.GetKeyDown(KeyCode.Space) && !audio.isPlaying) { //start looping
oldClip = audio.clip;
wasLooping = audio.loop;
audio.clip = jumpsounds;
audio.loop = true;
audio.Play();
}
if(Input.GetKeyUp(KeyCode.Space) && !audio.isPlaying) { //stop looping
//audio.Stop(); //stop the clip?
audio.clip = oldClip;
audio.loop = wasLooping;
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613072602im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Inventory Script Trouble 1 Answer
Touch Piano 1 Answer
Networking Gun Fire Sound 1 Answer
Raycast question 1 Answer
Side Scroller Script, Need help 1 Answer