Unity Spain

Mesa de ayuda => Unity3D => Scripting => Mensaje iniciado por: arth912 en Mayo 23, 2019, 02:19:44 AM

Título: colisionar y baje valor de un slider constantemente
Publicado por: arth912 en Mayo 23, 2019, 02:19:44 AM
Hola foro, tengo un slider de vida entonces quiero que cuando el jugador colisione con un objeto el slider baje de 1 en 1 constantemente, solo puedo hacer que baje cada vez que colisiono hay alguna solucion a mi problema? Gracias.
Título: colisionar y baje valor de un slider constantemente
Publicado por: leocub58 en Mayo 23, 2019, 03:51:34 AM
si lo metes en OnColliderStay o OnTriggerStay seguirá bajando.
Título: colisionar y baje valor de un slider constantemente
Publicado por: arth912 en Mayo 23, 2019, 04:24:47 AM
Me puedes explicar mas detalladamente? lamento la ignorancia
Título: colisionar y baje valor de un slider constantemente
Publicado por: lightbug en Mayo 23, 2019, 05:01:20 AM
La acción sería que baje de 1 en 1, pero de 1 en 1 no nos dice absolutamente nada, que es de 1 en 1, 60 veces por segundo? 200 veces por segundo? cada 1 segundo ? ... como te dice leocub con un "stay" podrías verificar una y otra vez, pero eso sí, va a bajar horriblemente rápido si no hacés algo al respecto, por ejemplo con un simple flag podés hacer algo así, con una corrutina:
 

public float duracion = 1f;
Coroutine perderVidaCoroutine;
void OnCollisionStay( Collision col )
{
if( personajeDisponible )
   perderVidaCoroutine = StartCoroutine( PerderVida() );
}
IEnumerator PerderVida()
{
vida--;
personajeDisponible = false;  //con esto no re-disparás la corrutina una y otra vez
yield return new WaitForSeconds( duracion );  //termina en 1 segundo por defecto
personajeDisponible = true;
}

 
Creo que podés ver si X corrutina se está reproduciendo, eso en este caso sería ideal, nunca lo usé.