Задать вопрос
@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 мс двигался со средней скоростью, ибо данное решение приводит к рывкам, если его перенести в проект, где точки нужно брать из массива, тогда ни о каком гладком перемещении речи идти не может.
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unity + ИИ
    6 месяцев
    Далее
  • Stepik
    PRO C#. Профессия "Разработчик игр на Unity"
    6 месяцев
    Далее
Решения вопроса 1
@ermolaev_nikita Автор вопроса
startMarker = transform.position; !!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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