Lerp функции в Unity (C#)

Lerp функции в Unity (C#)

DailyDev

В этом посте я хочу рассказать про принцип работы Lerp функции в Unity. Данная функция невероятно полезна, так как именно с её помощью мы можем сделать плавное перемещение объекта. Как вы уже поняли, я буду использовать язык C#.

Немного теории

Итак, начнем с того, что данная функция может принадлежать различным классам или структурам, в зависимости от того с чем мы работаем. К примеру, Lerp функция присутствует в структуре Mathf которая отвечает за все математические функции представленные библиотекой UnityEngine. Функция принимает аргументы a, b и t каждый из которых имеет тип float, а возвращает функция число типа float. Параметр t принимает значения от 0 до 1.

Описание функции в Visual Studio

Чтож, по определению, функция Mathf.Lerp() - это линейная интерполяция. Что это значит? По сути, это нахождение промежуточного значения, которое получается исходя из тех значений, которые мы передали функции. Покажу более наглядно.

Предположим, что мы передаем функции аргументы: a = 0, b = 1, t = 0.3f. Нашим начальным значением будет являться число a, а конечным b, иными словами, мы рассматриваем отрезок [a, b]. Что же делает параметр t? Этот параметр говорит нам какое число мы возьмем на этом промежутке. В данном случае это будет выглядеть так:

Иными словами, мы берем отрезок за 1 и возвращаем число которое делит его на отметке 0.3. Но как мы можем использовать это на практике? С помощью этой функции мы можем задать плавное перемещение объекта из одной точки в другую. Постепенно приближаясь к цели, объект замедляется.

Реализация

Рассмотрим использование этой функции на практике. Зададим движение кубу.

В данном случае мы будем использовать функцию структуры Vector3, так как мы работаем с transform.position.

Реализация движения куба:

private void Update()
{
    cube.transform.position = 
            Vector3.Lerp(cube.transform.position, targetPosition, .3f);
}

Каждый кадр куб проходит от своего положения до цели примерно треть пути, и, так как начальное значение параметра a каждый кадр разное, то и получается, что куб замедляется приближаясь к цели.

Заключение

В этом посте рассмотрел лишь основные способы использования данной функции, для более глубокого понимания я оставлю полезные ссылки.



Report Page