Amir228
@Amir228

Почему Юнити перестает работать?

Есть скрипт оружие, и когда оружие стреляет создаеться пуля.
Скрипт пули:
public void Start
{
      var startPos = transform.position;
      RaycastHit2D hit = Physics2D.Raycast(startPos, transform.up, Mathf.Infinity, mask);

      if (hit.colider)
      {
           float time = 0;
           int oldCount = 0;

           while (time < 2)
           {
                 var count = Time.frameCount;
                 if (oldCount != count)
                 {
                      transform.position = Vector2.Lerp(startPos, hit.point, time);
                      time += Time.deltaTime;
                      oldCount = count;
                 }
           }
     }
}


На пуле есть TrailRenderer. И по задумке должна двигаться к цели каждый кадр. Но почему то юнити просто перестает работать, возможно это из за бесконечного цикла, но я не вижу его.
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
WNeZRoS
@WNeZRoS
Возможно вечный цикл из-за того что if (oldCount != count) никогда не заходит внутрь т.к. этот код блокирует обработку кадров. Чтобы кадры продолжили обрабатываться надо в цикле использовать yield. Заодно можно заменить это ожидание циклом на корутину от юнити: yield return new WaitForSeconds(5);

https://docs.unity3d.com/ScriptReference/WaitForSe...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы