змейка устроена так, чтобы каждые 0.5 сек создавались префабы хвоста и удалялись через [длина змейки] / 2 секунд
Вот скрипт хвоста:
public float x;
private void Start()
{
x = Head_Movement.length / Head_Movement.speed;
Head_Movement.startWaiting += A; //в скрипте "Head_Movement" есть статическая функция "startWaiting"
}
IEnumerator _Del() //корутина, объект ждет х секунд и уничтожается, затем корутина останавливается.
{
yield return new WaitForSeconds(x);
Destroy(this.gameObject);
StopCoroutine(_Del());
}
void A() //этот метод нужен просто чтобы привязать его к функции startWaiting, когда функция вызывается,
{
StartCoroutine(_Del());
}
В скрипте Head_Movement каждые 0.5 сек вызывается функция startWaiting.
После того, как один префаб был удален и игра пытается удалить еще один, то выдается ошибка, что объект уже был уничтожен.