Estoy creando un juego de Plataformas 2D en el que si el jugador se cae de la base / suelo, quiero que el jugador reaparezca en el punto de control más cercano. Sin embargo, quiero que haya un retraso entre la caída del jugador y la reaparición. Esta es la sección de mi código para lograr este objetivo:
private void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log(collision.tag);
if (collision.tag.Equals("Kill"))
{
StartCoroutine("Respawn");
}
else if(collision.tag.Equals("Checkpoint"))
{
Animator flag = collision.GetComponent<Animator>();
if (!flag.GetBool("hasCrossed"))
{
flagCounter++;
flag.SetBool("hasCrossed", true);
checkpoint = collision.gameObject.transform.position;
}
}
}
IEnumerator Respawn()
{
yield return new WaitForSeconds(respawnDelay);
transform.position = checkpoint;
}
Esto funciona bien para pequeños retrasos de reaparición como 1 o 2 segundos. Pero al aumentar el retraso a 5 segundos, el jugador después de aparecer en el punto de control más cercano desaparece en un instante y luego, después de varias repeticiones, el jugador vuelve a aparecer.
Esto es por el retraso de 2 segundos
Esto es por el retraso de 5 segundos
¿Cómo puedo arreglar esto?