Noticias

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

Algo parecido al parametro Trigger del Animator

Iniciado por enelmenu, Octubre 03, 2017, 11:39:26 PM

Tema anterior - Siguiente tema
Buenas!

Necesito esto:
 
 Iterar Una sola vez, cada vez que el booleano del Raycast sea true.
 
Intente creando una variable Booleana (iterator) que comienza true y se hace false cuando RAYCAST es true, y cuando es false RAYCAST es false ITERATOR, el problema de hacerlo asi, es que al corroborar 4 veces los raycast en Update cuando uno es true no me da pelota por q los otros 3 dejan a false a iterator.

 
 
Alguna idea-solucion?

ABRAZO

Cita de: enelmenu date=1507066766Intente creando una variable Booleana (iterator) que comienza true y se hace false cuando RAYCAST es true, y cuando es false RAYCAST es false ITERATOR, el problema de hacerlo asi, es que al corroborar 4 veces los raycast en Update cuando uno es true no me da pelota por q los otros 3 dejan a false a iterator.
   


osea a ver si entendi... que consideras iterar una vez? porque simplemente no llamar a Glow()? (supongo que es alguna funcion). Para que necesitas un bool?
 
lo que veo ahi en el papel se podria hacer asi (pseudocodigo):
 

foreach(ray)
{
if(Physics (ray) )
   Glow();
}

 
 
 
 

Cita de: lightbug date=1507068072if(Physics (ray) ) Glow();
   


El tema de hacerlo asi, es que no itera una sola vez, itera cada frame en donde el ray sea true, yo quiero cuando ingrese un true itere una vez, y asi cada vez q vuelvo a entrar al ray.

Octubre 04, 2017, 12:18:23 AM #3 Ultima modificación: Octubre 04, 2017, 12:22:46 AM por lightbug
Cita de: enelmenu date=1507068412El tema de hacerlo asi, es que no itera una sola vez, itera cada frame en donde el ray sea true, yo quiero cuando ingrese un true itere una vez, y asi cada vez q vuelvo a entrar al ray.
   


Ah ok, pasa que la hoja me confundio un poco, y poniendo una bool exclusiva para el ray?
 

bool rayDetected1 = false;
bool rayDetected2 = false;
bool rayDetected3 = false;
bool rayDetected4 = false;
if(!rayDetected1)
   if(Physics (ray1) ){
      rayDetected1 = true;
      Glow();
   }
if(!rayDetected2)
   if(Physics (ray2) ){
      rayDetected2 = true;
      Glow();
   }
if(!rayDetected3)
   if(Physics (ray3) ){
      rayDetected3 = true;
      Glow();
   }
if(!rayDetected4)
   if(Physics (ray4) ){
      rayDetected4 = true;
      Glow();
   }
 

 
Se puede hacer mucho mas prolijo pero para dar la idea
 
Si tus ray van a acarrear info, como por ejemplo que tocan, el bool este de arriba, y demas, te conviene mas bien definir una estructura o clase con todo lo que necesitas, fijate que si ttuvieras muchisimos mas no te vas a poner definiendo ray1..2..3...78 , directamente iteras con un for o foreach un arreglo o lista de rays (estructura o clase) y el codigo te queda mucho mejor, como arriba podrias poner:
 

foreach(RayEnelmenu rayElement in m_RayList)
{
if(!rayElement.triggered)
   if(Physics (rayElement.ray ,.....) )   {   
      Glow();
                        rayElement.triggered = true;
             }

}

 
 
 
EDITO: fijate que si queres que cuando no se de el raycast sea falso solo basta con invertir el if(triggered) con el raycast, sino asi nunca vuelve a ponerlo en false

Etiquetas: