Ich erstelle ein 2D-Platformer-Spiel, bei dem der Spieler, wenn er von der Basis / vom Boden fällt, am nächsten Kontrollpunkt wieder auftauchen soll. Ich möchte jedoch, dass es eine Verzögerung zwischen dem Spieler, der vom Boden fällt, und dem Respawn gibt. Dies ist der Teil meines Codes, um dieses Ziel zu erreichen:
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;
}
Dies funktioniert gut für kleine Respawn-Verzögerungen wie 1 oder 2 Sekunden. Wenn Sie die Verzögerung auf 5 Sekunden erhöhen, verschwindet der Spieler sofort, nachdem er am nächsten Kontrollpunkt erschienen ist. Nach einigen Wiederholungen erscheint der Spieler wieder.
Dies ist für die Verzögerung von 2 Sekunden
Dies ist für die Verzögerung von 5 Sekunden
Wie kann ich das beheben?