Estou criando um jogo de plataformas 2D no qual, se o jogador cair da base / solo, quero que o jogador reapareça no ponto de verificação mais próximo. No entanto, quero que haja um atraso entre o jogador que cai do chão e o ressurgimento. Esta é a seção do meu código para atingir 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;
}
Isso funciona bem para pequenos atrasos de reaparecimento, como 1 ou 2 segundos. Mas, ao aumentar o atraso para 5 segundos, o jogador depois de aparecer no ponto de verificação mais próximo desaparece em um instante e, depois de algumas repetições, o jogador reaparece.
Isso ocorre pelo atraso de 2 segundos
Isso ocorre pelo atraso de 5 segundos
Como posso consertar isso?