@ermolaev_nikita

Как реализовать равномерную интерполяцию в Unity?

Никак не могу добиться правильной интерполяции между двумя точками, алгоритм у меня следующий

Есть 2 точки и есть время за которое объект должен их пройти. Время в данном примере = 0.1 сек

void Update()
{
if(flagJourney == false)
{
     endPosition = P1;
     startMarker = transform;
     startTime = Time.time;
     flagJourney = true;
}
else
{
     float prec = (Time.time - startTime) / (0.1f);
     if(prec  >= 1)
     {
          flagJourney = false;
          if(prec  > 1)
              prec = 1;
     }
     transform.position = Vector3.Lerp(startMarker.position, endPosition, prec);
     Debug.Log(Vector3.Distance(transform.position, endPosition)); // вывод дистанции, которую проходит объект за 1 проход
}
}


qTzfvsy.png
Как видно из скриншота, объект за примерно 100 миллисекунд проделал крайне неравномерный путь, данные точки могут примерно напомнить экспоненциальную зависимость. Мне же надо чтобы объект на протяжении 100 мс двигался со средней скоростью, ибо данное решение приводит к рывкам, если его перенести в проект, где точки нужно брать из массива, тогда ни о каком гладком перемещении речи идти не может.
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
@ermolaev_nikita Автор вопроса
startMarker = transform.position; !!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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