- Home /
Audio Script help
Hi! I have this script here,
var audioStepLength = 0.3; var walkSounds:AudioClip[];
function Start () { var controller : CharacterController = GetComponent(CharacterController);
while (true)
{
if (controller.isGrounded && controller.velocity.magnitude > 0.3)
{
audio.clip = walkSounds[Random.Range(0, walkSounds.length)];
audio.Play();
yield WaitForSeconds(audioStepLength);
if (Input.GetKey ("s")) {
audio.volume = 0.0;
}
}
else
{
yield;
audio.volume = 1.0;
}
}
}
It's supposed to mute the sound(foot steps) when the player presses the "s" key, and while this does work, the sound won't come back on. The "else, volume 1.0" should do it but it isn't for some reason. Any help would be much appreciated. Thanks for reading, and taking the time!
-Rov
Answer by Anxo · Jan 27, 2013 at 02:10 PM
your problem is you have a yield in your while statement that does not allow the code to continue to check if you are hitting the button or not. So while it is waiting for the sound to play it will stay there not checking if you let go of the button. Remove everything after the Yield Waitforseconds and put this in your update.
function Update(){
if(input.GetKeyDown("s"){
audio.volume =0.0;
}
else if (input.GetKeyUp("s"){
audio.volume = 1.0;
}
}
I added the "else if...." part to my script but now, every time I try to play the scene, unity locks up. But when I remove the script, it runs just fine.... I can't figure out what's wrong.
-Rov
I said you need to move it out of the While statement and into the update. please read the answer again.
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
How to make a pick up gun script? 0 Answers
Audio Clip trouble 2 Answers
Can I make the signal from Microphone into a 3D sound in real time? 0 Answers
GUIlayout background image or color 0 Answers