Я создаю 2D-платформерную игру, в которой, если игрок падает с основания / земли, я хочу, чтобы игрок возродился на ближайшей контрольной точке. Однако я хочу, чтобы между падением игрока и респауном произошла задержка. Это раздел моего кода для достижения этой цели:
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;
}
Это прекрасно работает для небольших задержек респауна, таких как 1 или 2 секунды. Но, увеличив задержку до 5 секунд, игрок после появления на ближайшей контрольной точке исчезает в одно мгновение, а затем после нескольких повторений игрок снова появляется.
Как я могу это исправить?