Есть 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 проход
}
}
{
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 млс двигался со средней скоростью, ибо данное решение приводит к рывкам, если его перенести в проект, где точки нужно брать из массива, тогда ни о каком гладком перемещении речи идти не может.