Je crée un jeu de plateforme 2D dans lequel si le joueur tombe de la base / du sol, je veux que le joueur réapparaisse au point de contrôle le plus proche. Cependant, je veux qu'il y ait un délai entre le joueur qui tombe du sol et la réapparition. Voici la section de mon code pour atteindre cet objectif:
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;
}
Cela fonctionne bien pour les petits retards de réapparition comme 1 ou 2 secondes. Mais en augmentant le délai à 5 secondes, le joueur après être apparu au point de contrôle le plus proche disparaît en un instant, puis après plusieurs répétitions, le joueur réapparaît.
C'est pour le délai de 2 secondes
C'est pour le délai de 5 secondes
Comment puis-je réparer cela?