Noticias

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

Sonido no suena bien

Iniciado por ramunda, Agosto 02, 2016, 05:04:44 PM

Tema anterior - Siguiente tema
Agosto 02, 2016, 05:04:44 PM Ultima modificación: Agosto 02, 2016, 10:47:40 PM por ramunda
Buenas tardes,
 
tengo un pequeño dilema con un sonido.
 
me aseguro de que no suene nada mas , para que se active al llegar a 2 puntos,
 
Se activa el sonido pero no se para se reproduce una y otra vez...
 
Por mucho que miro no veo donde tengo el fallo....
 
A ver si ustedes me pueden ayudar, gracias.
 
 
 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class puntos : MonoBehaviour
{
public static puntos instance;
public GameObject fireworks;
public GameObject tiempo;
public GameObject botonnivel1;
public AudioClip premio;
     AudioSource audio;
public void Awake()
{
   puntos.instance = this;
}
public float puntuacion = ;
public Text Puntos;
void Start()
{
   audio = GetComponent<AudioSource>();
   Puntos.text = "" + PlayerPrefs.GetFloat("Totales").ToString("f0");
 
}
   
  void Update ()
{
   if (puntuacion >= 2)
   {
   if (!audio.isPlaying)
   osito ();
 
   Puntos.text = " Puntos " + puntuacion.ToString ();
   }
   }
 
void osito()
{
      audio.clip = premio;
      audio.loop = false;
      audio.Play();
}
}

 
 

No lo entiendo bien, ya que, cada vez que se pare y mientras los puntos sean >= 2, volverá a realizar play. Será como un loop claro.

Cita de: iRobb date=1470171860No lo entiendo bien, ya que, cada vez que se pare y mientras los puntos sean >= 2, volverá a realizar play. Será como un loop claro.
   


Hay esta la cosa , como decirle que si llega a 2 puntos suene el sonido , he probado con ==2 , pero no funciona...
 
Tonces como seria para decirle que si llega a 2...suene el sonido?
 
 
 
Gracias iRobb.
 
 

pon >=2.0f y no 2, que es un float

Agosto 02, 2016, 11:16:47 PM #4 Ultima modificación: Agosto 02, 2016, 11:17:13 PM por ramunda
Cita de: iRobb date=1470172328pon >=2.0f y no 2, que es un float
   


Gracias iRobb pero sigue loopeando :(
 

void Update ()
{
   if (puntuacion >= 2.0f)
   {
      if (!audio.isPlaying)
         osito ();
   }
      Puntos.text = " Puntos " + puntuacion.ToString ();
}
 
void osito()
{
   audio.clip = premio;
   audio.loop = false;
   audio.Play();
}
}

 
 

Claro que loopea. Ya te lo he dicho antes. Si el valor de la puntuación es siempre >=2.0f, pues siempre volverá a entrar. Lo que debes hacer es poner un bool de que si ya ha entrado, no vuelva a llamar a osito y así se ejecute una vez.

Cita de: iRobb date=1470172731Claro que loopea. Ya te lo he dicho antes. Si el valor de la puntuación es siempre >=2.0f, pues siempre volverá a entrar. Lo que debes hacer es poner un bool de que si ya ha entrado, no vuelva a llamar a osito y así se ejecute una vez.
   


Entiendo, si me lo estas diciendo clarísimo disculpa.
 
Ahora aver como meto ese bool...
 
 
 
 

Un bool con true cuando esté en osito y compuebas que sea false aparte del >= 2.0f. Por defecto lo pones a false.

Cita de: iRobb date=1470173181Un bool con true cuando esté en osito y compuebas que sea false aparte del >= 2.0f. Por defecto lo pones a false.
   


madre de todo lo hermoso...pero que catete soy!!!
 
no se donde meter el dichoso boll :(
 
lo he puesto asi y sigue igual elbool se llama detener.
 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class puntos : MonoBehaviour
{
public static puntos instance;
public GameObject fireworks;
public GameObject tiempo;
public GameObject botonnivel1;
public AudioClip premio;
AudioSource audio;
private bool detener= false;
public void Awake()
{
   puntos.instance = this;
}
public float puntuacion = ;
public Text Puntos;
 
void Start()
{
   audio = GetComponent<AudioSource>();
   Puntos.text = "" + PlayerPrefs.GetFloat("Totales").ToString("f0");
}
 
void Update ()
{
   if (puntuacion >= 2.0f)
   if (!audio.isPlaying)
   {
   osito ();
   }
   
   Puntos.text = " Puntos " + puntuacion.ToString ();
}
 
void osito()
{
   detener = true;
   audio.clip = premio;
   audio.loop = false;
   audio.Play();
}
}
 
 
 


 
 

Asi:
 

if (puntuacion >= 2.0f && detener == false) {
  osito ();
}

Cita de: iRobb date=1470174319Asi:
   
   

if (puntuacion >= 2.0f && detener == false) {
  osito ();
}



iRobb, funciona, perfectamente , gracias por la ayuda y la paciencia.
 
Dejo el escript funcionado para futuras visitas.
 
mil gracias!!
 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class puntos : MonoBehaviour
{
public static puntos instance;
public GameObject fireworks;
public GameObject tiempo;
public GameObject botonnivel1;
public AudioClip premio;
AudioSource audio;
private bool detener= false;
public void Awake()
{
   puntos.instance = this;
}
public float puntuacion = ;
public Text Puntos;
 
void Start()
{
   audio = GetComponent<AudioSource>();
   Puntos.text = "" + PlayerPrefs.GetFloat("Totales").ToString("f0");
}
 
void Update ()
{
   if (puntuacion >= 2.0f && detener == false)
   {
      if (!audio.isPlaying)
      osito ();
   }            
      Puntos.text = " Puntos " + puntuacion.ToString ();
}
void osito()
{
   detener = true;
   audio.clip = premio;
   audio.loop = false;
   audio.Play();
}
}

 
 

Etiquetas: