Noticias

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

ayuda con este SCRIPT

Iniciado por neker92, Enero 28, 2016, 02:44:03 AM

Tema anterior - Siguiente tema
hola amigos, hice este script para que el JUGADOR cada vez que recoge MONEDAS se reproduzca un sonido. bueno con este escript que hice SI FUNCIONA pero  el problema es que  una vez que haya chocado O recogido ese objeto(moneda) sigue reproduciendo el sonido solo al tocar la pantalla o al presionar SPACE (en Unity) a pesar de no recoger moneda :::  Y no logro encontar el problema  espero su ayudaaaEL JUEGO QUE ESTOY HACIENDO ES PARECIDO A LA TEMÁTICA DE FLAPPY BIRDmi script---------///////////////////////////////////////////////////////////////////////////////////////////////////////////////////7public class sonidoCoin : MonoBehaviour
{    
    public AudioClip audioCoin;
    private AudioSource thisaudio; 
    void Awake()
    {        thisaudio = this.GetComponent<AudioSource>();
    }
      public void OnTriggerEnter2D(Collider2D other)
    {        if(other.gameObject.tag == "Coin")
        {
            thisaudio.clip = audioCoin;
            thisaudio.Play();        }     
   }
}

[quote author=neker92" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35024" data-ipsquote-contentcommentid="126566">hola amigos, hice este script para que el JUGADOR cada vez que recoge MONEDAS se reproduzca un sonido. bueno con este escript que hice SI FUNCIONA pero  el problema es que  una vez que haya chocado O recogido ese objeto(moneda) sigue reproduciendo el sonido solo al tocar la pantalla o al presionar SPACE (en Unity) a pesar de no recoger moneda :::  Y no logro encontar el problema  espero su ayudaaaEL JUEGO QUE ESTOY HACIENDO ES PARECIDO A LA TEMÁTICA DE FLAPPY BIRDmi script---------///////////////////////////////////////////////////////////////////////////////////////////////////////////////////7public class sonidoCoin : MonoBehaviour
{    
    public AudioClip audioCoin;
    private AudioSource thisaudio; 
    void Awake()
    {        thisaudio = this.GetComponent<AudioSource>();
    }
      public void OnTriggerEnter2D(Collider2D other)
    {        if(other.gameObject.tag == "Coin")
        {
            thisaudio.clip = audioCoin;
            thisaudio.Play();        }     
   }

Cita de: neker92 date=1453945443" data-ipsquote="" data-cite="neker92" class="ipsQuotehola amigos, hice este script para que el JUGADOR cada vez que recoge MONEDAS se reproduzca un sonido. bueno con este escript que hice SI FUNCIONA pero  el problema es que  una vez que haya chocado O recogido ese objeto(moneda) sigue reproduciendo el sonido solo al tocar la pantalla o al presionar SPACE (en Unity) a pesar de no recoger moneda :::  Y no logro encontar el problema  espero su ayudaaa
Te recomiendo que cuando pretendas hacer un proyecto te hagas primero algun tipo de diseño escrito donde estampes no solo la idea de tu proyecto si no tambien, y mas importante, todo lo referente al funcionamiento : que clases (o scripts en este caso) vas a necesitar crear, que atributos tendran cada clase, que clases interactuaran entre ellas y de que modo, etc. Suele suceder que cuando se acaba un proyecto, tenga variaciones respecto al diseño original pero este siempre es de mucha ayuda para tener una guia y no cometer cagadas de este tipo ... sobretodo cuando estas empezando y no tienes experiencia en programacion.Leyendo tu problema y viendo el script, me voy a atrever a hacer afirmaciones sobre tu proyecto sin necesidad de verlo (si fallo en alguna afirmacion, puedes dejar de leer) :
  • Este script lo tienes puesto en el "personaje" de tu juego.
  • En tu juego, al pulsar el barra de espacio tu personaje realiza alguna accion; si dices que es tipo flappy birds me imagino que elevarse. Esto en otro script.
  • ... y aqui esta el origen de tu problema ... cuando realiza la accion anterior, lo tienes puesto para que se escuche un sonido. Y encima, sin necesidad de ver el script que mueve tu personaje, apuesto a que se escucha correctamente hasta que no coges la primera moneda.
Por si no has entendido tu problema, te explico porque se produce ese "error" ... aunque no me hagas mucho caso tampoco, creo que no tengo ni idea de programacion y es dificil imaginarselo viendo solo un script xDUn gameobject solo puede tener un AudioSource, y si no estoy equivocando, en tu script que controla el movimiento de tu personaje tendras dentro de la funcion Update alguna linea parecida a if (Input.GetKeyDown (KeyCode.Space)) audio.Play (); que al principio deberia funcionar correctamente.Despues en este script, que tambien tienes puesto dentro de tu personaje, tienes una linea donde pones thisaudio.clip = audioCoin; y en ese momento lo que estas haciendo es cambiar el clip de audio que esta asociado al AudioSource del gameobject que contiene el script, que como es el personaje y solo puede tener un AudioSource ... estas cambiando tambien el clip que haces sonar desde el otro script cuando pulsas la barra espaciadora.Como dices que no conseguias encontrar el problema y ahora ya sabes donde esta ... solucionarlo (que no es nada complicado) es cosa tuya; paso de poner codigo mio porque tiene copyright xDDD

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35024" data-ipsquote-contentcommentid="126581">Solo leyendo el problema y despues el codigo, es evidente que los gameobjects "moneda" tienen el tag Coin ... si no fuera asi, el problema seria que no se escucharia NUNCA ese sonido.Dejando de banda que semicolon es ";" (punto y coma) ... esas dos llaves, la primera y la ultima no sobran. Son las llaves que indican todo lo que contiene en su interior la clase sonidoCoin y se tienen que poner siempre al principio para abrir la clase y al final para cerrarla.Te recomiendo que cuando pretendas hacer un proyecto te hagas primero algun tipo de diseño escrito donde estampes no solo la idea de tu proyecto si no tambien, y mas importante, todo lo referente al funcionamiento : que clases (o scripts en este caso) vas a necesitar crear, que atributos tendran cada clase, que clases interactuaran entre ellas y de que modo, etc. Suele suceder que cuando se acaba un proyecto, tenga variaciones respecto al diseño original pero este siempre es de mucha ayuda para tener una guia y no cometer cagadas de este tipo ... sobretodo cuando estas empezando y no tienes experiencia en programacion.Leyendo tu problema y viendo el script, me voy a atrever a hacer afirmaciones sobre tu proyecto sin necesidad de verlo (si fallo en alguna afirmacion, puedes dejar de leer) :
  • Este script lo tienes puesto en el "personaje" de tu juego.
  • En tu juego, al pulsar el barra de espacio tu personaje realiza alguna accion; si dices que es tipo flappy birds me imagino que elevarse. Esto en otro script.
  • ... y aqui esta el origen de tu problema ... cuando realiza la accion anterior, lo tienes puesto para que se escuche un sonido. Y encima, sin necesidad de ver el script que mueve tu personaje, apuesto a que se escucha correctamente hasta que no coges la primera moneda.
Por si no has entendido tu problema, te explico porque se produce ese "error" ... aunque no me hagas mucho caso tampoco, creo que no tengo ni idea de programacion y es dificil imaginarselo viendo solo un script xDUn gameobject solo puede tener un AudioSource, y si no estoy equivocando, en tu script que controla el movimiento de tu personaje tendras dentro de la funcion Update alguna linea parecida a if (Input.GetKeyDown (KeyCode.Space)) audio.Play (); que al principio deberia funcionar correctamente.Despues en este script, que tambien tienes puesto dentro de tu personaje, tienes una linea donde pones thisaudio.clip = audioCoin; y en ese momento lo que estas haciendo es cambiar el clip de audio que esta asociado al AudioSource del gameobject que contiene el script, que como es el personaje y solo puede tener un AudioSource ... estas cambiando tambien el clip que haces sonar desde el otro script cuando pulsas la barra espaciadora.Como dices que no conseguias encontrar el problema y ahora ya sabes donde esta ... solucionarlo (que no es nada complicado) es cosa tuya; paso de poner codigo mio porque tiene copyright xDDD[/quote]http://unityspain.com/profile/26665-arthure/?do=hovercard&referrer=http%253A%252F%252Funityspain.com%252Ftopic%252F35024-ayuda-con-este-script%252F" title="Go to Arthure's profile" id="ips_uid_6" style="box-sizing: border-box; color: inherit; text-decoration: none; background-color: transparent;" href="<___base_url___>/profile/26665-arthure/ date=1453991856]Arthure  eres un genio,  ayer me quede hasta las 2 am(madrugada) tratando de arreglar eso pero no lo logre-- y recién hoy a esos de las 5 de la tarde leí tu comentario y me puse a revisar detalladamente hasta que logre solucionar.... GRACIAS  :-) 

Etiquetas: