Noticias

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

Temas recientes

colisionar y baje valor de un slider constantemente

Iniciado por arth912, Mayo 23, 2019, 02:19:44 AM

Tema anterior - Siguiente tema
Mayo 23, 2019, 02:19:44 AM Ultima modificación: Mayo 23, 2019, 02:22:06 AM por arth912
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.

si lo metes en OnColliderStay o OnTriggerStay seguirá bajando.

Me puedes explicar mas detalladamente? lamento la ignorancia

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é.

Etiquetas: