Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Activar y Desactivar AudioSource

Iniciado por fulanodetal33, Enero 08, 2016, 11:02:50 PM

Tema anterior - Siguiente tema
Hola a todos, a ver si alguien puede ayudarme con este código de Audio, seguro que es algo muy sencillo, pero no consigo averiguarlo porque soy principiante en JavaScriptIntento reproducir un Audio de un cuervo, que el audio cada 5 segundos se active y en 5 segundos se desactive, así repetidamente... Os paso el código para que veáis como lo estoy haciendo...seguro que fatal @script RequireComponent( AudioSource )

   private var cuervo : AudioClip;    
   var tiempo : boolean = true;
 
 
function Update () {    
sonido();
}

function sonido(){

if (tiempo==true){
 
yield WaitForSeconds(5);
 
tiempo = false;
audio.Stop();
 }
 
else if(tiempo==false){

yield WaitForSeconds(5);
tiempo = true;
audio.Play();
}
} 

Enero 09, 2016, 12:10:49 AM #1 Ultima modificación: Enero 09, 2016, 12:15:38 AM por iRobb
El audio es el AudioSource y el clip está asociado con él en el editor? Es que no veo que es audio.Ah, y además, yo conozco C# y no sé como se hace en javascript, pero llamas a una coroutine, sin el StartCoroutine en el update. Y además, se te van a ejecutar 60 veces por segundo esa llamada de sonido().Deberías llamarla con InvokeRepeating y que se ejecute cada 5 segundos, sin el yield WaitForSeconds, creando el invokeRepeating en el Start() por ejemplo.http://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html">http://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html 

Enero 09, 2016, 01:15:10 AM #2 Ultima modificación: Enero 09, 2016, 01:19:22 AM por fulanodetal33
Gracias por contestar Compa!!!!El audioSource está puesto en el Inspector y he colocado el audio dentro de AudioClipY como podría utilizar el invokeRepeating con un Audio, ¿así? 
@script RequireComponent( AudioSource )

    var cuervo : AudioClip;    
 
function Start () {    

InvokeRepeating ("cuervo", 5, 5);

}
pero no puedo...me sale mensaje en la consola de : Trying to Invoke method: ScriptsonidoCuervo.cuervo couldn't be called.Me dice que no puede ser llamado ¿me puedes ayudar, porfaaaaa? [quote author=fulanodetal33" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34866" data-ipsquote-contentcommentid="125846 date=1452298510] [/quote] 

No, no. InvokeRepeating llama a una función. Mírate el link que te pasé para saber como funciona.

Enero 09, 2016, 04:19:23 PM #4 Ultima modificación: Enero 09, 2016, 04:49:06 PM por fulanodetal33
Ey!! He mirado el link que me has mandado y he puesto el InvokeRepeating en function Start y llama a la función cuervo...Pues ahora el sonido se ejecuta en 5 segundos, pero de manera Loop, debería parar y empezar cada 5 segundos¿no?se supone que el 5 de la izquierda es que empieza el sonido en 5 segundosy el 5 de la derecha se pondrá en marcha cada 5 segundos...pero no lo hace....lo hace Looppor cierto, la casilla de Loop en el audiosource está desactivado..Te mando el código para que veas como lo he hecho, pero es un coñazo escuchar el cuervo todo el rato...lo normal es que el sonido salga cada 5  segundos..¿¿¿¿No existe alguna manera de desactivar el AudioSource y volverlo a activarlo cada 5  segundos?????? en vez de poner audio.Play();Estoy apunto, casi está, pero me falta eso!! Gracias iRobb!! eres the Machine!! Help please!!! 
@script RequireComponent( AudioSource )

    var cuervob : AudioClip;    
 
 function Start () {
 InvokeRepeating ("cuervo", 5, 5);
}

function cuervo (){
audio.Play();
}
 

Haz playoneshot en vez del play. Pero cuanto dura el sonido del cuervo? 5 segundos? Entonces claro que hará loop. Deberías poner cada 5 segundos + el tiempo del sonido para que haya un espaciado de tiempo.

Enero 10, 2016, 04:53:33 PM #6 Ultima modificación: Enero 10, 2016, 05:03:56 PM por fulanodetal33
OK, ya he encontrado una manera para hacerlo como yo quería...No se si es una manera cutre, pero por lo menos hace lo que yo  quería...gracias de todas formas!!! os paso el código por si a alguien le interesa!!!
@script RequireComponent( AudioSource )
// y desactivas play on awake


var Empezar_en : float = 5;  // segundos
var Tiempo_Silencio : float = 15; // segundo
private var cuervo : AudioClip;

function Start() {
sonido_cuervo();
}

function sonido_cuervo () {

for (var x = 1; x > 0; x++) {


 //  espera 5 segundos para el comienzo del sonido    
yield WaitForSeconds(Empezar_en);
 audio.Play();
 // se detiene el sonido durante 15 segundos
 yield WaitForSeconds(Tiempo_Silencio);
 audio.Stop();
 
 }
}
No he utilizado el InvokeRepeating...pero de esta manera funciona de p..madre!!!Lo que hace en este código es que en darle al Play del Game en 5 segundo reproduce el audio del cuervo, detiene el audio durante 15 segundos y vuelve a reproducir el audio...así repetidamenteBueno iRobb, gracias por tu ayuda, pero creo que me quedo con este aunque seguiré probando con InvokeRepeating para entender como funciona

Etiquetas: