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

Программирование на Юнити.

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

Сообщение skDYLAN 19 ноя 2017, 15:14

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

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

Синтаксис:
Используется csharp
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 проход
}
}


Скриншот консоли
Изображение

Как видно из скриншота, объект за примерно 100 миллисекунд проделал крайне не равномерный путь, данные точки могут примерно напомнить экспоненциальную функцию. Мне же надо чтобы объект на протяжении 100 млс двигался со средней скоростью, ибо данное решение приводит к рывкам, если его перенести в проект, где точки нужно брать из массива, тогда ни о каком гладком перемещении речи идти не может.
skDYLAN
UNец
 
Сообщения: 30
Зарегистрирован: 04 окт 2017, 13:30

Re: Как сделать равномерную интерполяцию?

Сообщение Tolking 19 ноя 2017, 17:43

Принципиально все верно сделано, но есть нюанс - startMarker = transform; если это вынести в старт ничего не изменится вообще. Нужно запоминать положение, а не ссылку на трансформ...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Как сделать равномерную интерполяцию?

Сообщение skDYLAN 19 ноя 2017, 17:49

Tolking писал(а):Принципиально все верно сделано, но есть нюанс - startMarker = transform; если это вынести в старт ничего не изменится вообще. Нужно запоминать положение, а не ссылку на трансформ...


Да, вы меня опередили, спасибо
skDYLAN
UNец
 
Сообщения: 30
Зарегистрирован: 04 окт 2017, 13:30


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9