Я створюю гру 2D Platformer, в якій, якщо гравець впаде з бази / землі, то я хочу, щоб гравець відтворився на найближчому контрольному пункті. Однак я хочу, щоб між гравцем, що впав з землі, і респансом був затримка. Це розділ мого коду для досягнення цієї мети:
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 секунд, гравець після появи на найближчій контрольній точці вмить вимикається, а потім після зовсім декількох повторів гравець знову з’являється.
Як я можу це виправити?