Задать вопрос
@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 мс двигался со средней скоростью, ибо данное решение приводит к рывкам, если его перенести в проект, где точки нужно брать из массива, тогда ни о каком гладком перемещении речи идти не может.
  • Вопрос задан
  • 193 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Профессия Разработчик игр на Unity с нуля
    10 месяцев
    Далее
  • Skillbox
    Middle-разработчик игр на Unity
    3 месяца
    Далее
  • GB (GeekBrains)
    Разработчик Игр на Unity
    10 месяцев
    Далее
Решения вопроса 1
@ermolaev_nikita Автор вопроса
startMarker = transform.position; !!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы