Sto creando un gioco platform 2D in cui se il giocatore cade dalla base / terreno, voglio che il giocatore riappaia al checkpoint più vicino. Comunque voglio che ci sia un ritardo tra il giocatore che cade da terra e il respawn. Questa è la sezione del mio codice per raggiungere questo obiettivo:
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;
}
Funziona bene per piccoli ritardi di rigenerazione come 1 o 2 secondi. Ma aumentando il ritardo a 5 secondi, il giocatore dopo essere apparso al checkpoint più vicino svanisce in un istante e poi dopo alcune ripetizioni il giocatore ricompare.
Questo è per il ritardo di 2 secondi
Questo è per il ritardo di 5 secondi
Come posso risolvere questo problema?