Noticias

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

Help

Iniciado por R3N3, Noviembre 18, 2015, 03:24:46 PM

Tema anterior - Siguiente tema
Noviembre 18, 2015, 03:24:46 PM Ultima modificación: Junio 05, 2016, 04:36:09 PM por pioj
Necesito un metodo que se ejecute en un solo frame. Porque suelo tener el siguiente problema:
 



   
       
   
   
       if(Time.time%10==0){  ///cada diez segundos
   
   
      Instantiate(explosion);  //crear uina explosion
   
   
      {
   
   
       
   

[/quote]
 
quiero una sola explosion, pero como en un segundo se ejecutan varios frames, al cumplirse la condicion me crea muchas explociones.
 
si llamo un metodo me sucede lo mismo, EJ:
 



   
       
   
   
      if(vida==0){
   
   
      player.SendMessage("muerte");
   
   
      }
   
   
       
   

[/quote]
 
ocurre ela muerte una y otra vez hasta que la vida se resetea.
 
 

Noviembre 18, 2015, 04:28:03 PM #1 Ultima modificación: Junio 05, 2016, 04:35:32 PM por pioj
Utiliza Invoke
 
 
 
Saludos!

Noviembre 18, 2015, 05:41:53 PM #2 Ultima modificación: Noviembre 18, 2015, 05:42:35 PM por Final Level
public float frecuencia = 10.0f; // segundos
float ultimaVez;

void Update ()
{

// condicion de si debe hacer una explosion?
Explosion ();
}

void Explosion ()
{
if ( Time.time > (ultimaVez + frecuencia) ) {
   
   // efectos explosion, sonidos, etc...
   
   
   
   // última explosión
   ultimaVez = Time.time;
}

}
 

a lo que veo, ocupas instanciar la explosion pero solo cuando la vida llegue  a 0, el checar la concidion (vida ==0 ) no debe de estar en el update , si no en la funcion dodne estes restando la vida , cada vez que restes vida preguntas si la vida es <= 0 si es el caso instancias la explosion .coloca tu script completo para auydarte amigo saludos  

Cita de: francoe1 date=1447860483" data-ipsquote="" data-cite="francoe1" class="ipsQuoteUtiliza Invoke(); Saludos!
Gracias por el consejo, pero invoke() ya lo utilizé y me falló. Traté de cancelarlo con un boolean que activara un CancelInvoke() y nada, la variable en true y el CancelInvoke() ni por enterado. Tal vez no lo estoy usando bien, si tienes algún ejemplo en código y me lo puedes poner aquí te lo agadecería.
 [quote author=ACarranza date=1447959872" data-ipsquote="" data-cite="ACarranza" class="ipsQuote">a lo que veo, ocupas instanciar la explosion pero solo cuando la vida llegue  a 0, el checar la concidion (vida ==0 ) no debe de estar en el update , si no en la funcion dodne estes restando la vida , cada vez que restes vida preguntas si la vida es <= 0 si es el caso instancias la explosion .coloca tu script completo para auydarte amigo saludos :)

Etiquetas: