не могу дать время через которое выполняется функция
у меня проблема в том что я не могу дать время через которое выполняется функция. Начнём с начала: я хотел что бы при смерти игрока, высвечивался "game over" через не большой промежуток времени, но по каким то не ведомым причинам ни "Coroutine" ни "Invoke" не хотят работать в "void OnTriggerEnter2D", а в игре просто не появляется "game over". Я неделю пытался всеми возможными методами заставить работать эту задержку перед выполнением, но угробил время в пустую. код:
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("damage"))
{
StartCoroutine(wait());
IEnumerator wait()
{
yield return new WaitForSeconds(2f);
game_over.SetActive(true);
}
Destroy(gameObject);
}
}
кто найдёт решение моей проблемы буду очень благодарен)
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Вы уничтожаете объект раньше времени, очевидно же
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("damage"))
{
StartCoroutine(wait());
IEnumerator wait()
{
yield return new WaitForSeconds(2f);
game_over.SetActive(true);
Destroy(gameObject);
}
}
}
На уничтоженном объекте скрипты не выполняются, корутины в том числе.