Аналіз лінійної інтерполяції функції Lerp в Unity. Плавне пересування ігрових об’єктів

Автор:

Анотація: Досліджено функцію для плавного пересування ігрових об’єктів.

Бібліографічний опис статті:

. Аналіз лінійної інтерполяції функції Lerp в Unity. Плавне пересування ігрових об’єктів//Наука онлайн: Міжнародний електронний науковий журнал - 2021. - №5. - https://nauka-online.com/publications/technical-sciences/2021/5/4-4/

Стаття опублікована у: : Наука Онлайн No5 май 2021

Технічні науки

УДК 004.051

Квасняк Катерина Миколаївна

студентка

Харківського національного  університету радіоелектроніки

Квасняк Екатерина Николаевна

студентка

 Харьковского национального  университета радиоэлектроники

Kvasniak Kateryna

Student of the

Kharkiv National University of Radio Electronics

АНАЛІЗ ЛІНІЙНОЇ ІНТЕРПОЛЯЦІЇ ФУНКЦІЇ LERP В UNITY. ПЛАВНЕ ПЕРЕСУВАННЯ ІГРОВИХ ОБ’ЄКТІВ

АНАЛИЗ ЛИНЕЙНОЙ ИНТЕРПОЛЯЦИИ ФУНКЦИИ LERP В UNITY. ПЛАВНОЕ ПЕРЕДВИЖЕНИЕ ИГРОВЫХ ОБЪЕКТОВ

ANALYSIS OF LINEAR INTERPOLATION OF LERP FUNCTION IN UNITY. SMOOTH MOVEMENT OF GAME OBJECTS

Анотація. Досліджено функцію для плавного пересування ігрових об’єктів.

Ключові слова: інтерполяція, ігровий об’єкт, взаємодія ігрових об’єктів, пересування, плавних рух.

Аннотация. Исследована функция для плавного передвижения игровых объектов.

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

Summary. The function for smooth movement of game objects was investigated.

Key words: interpolation, game object, game objects interaction, movement, smooth movement.

Розробка комп’ютерних ігор — окрема сфера індустрії з безліччю напрямків. Процес розробки гри дуже складний, потребує багато часу, ідей та повноцінну команду спеціалістів.

Одним з важливих аспектів під час створення механіки гри є налаштування взаємодії між ігровими об’єктами. Досить часто для пересування ігрових об’єктів у Unity використовується функція Lerp. Вона заснована на принципі лінійної інтерполяції, яку буде детально розібрано шляхом експерименту.

Взагалі, інтерполяція — спосіб знаходження проміжних значень величини за наявним дискретним набором відомих значень. Іншими словами, це спосіб уповільнити переміщення або поворот ігрового об’єкту [1, с. 150-156].

Для постійного оновлення позиції ігрового об’єкта інтерполяція використовується всередині функції Update, як зображено на рисунку 1.

За рахунок того, що Update викликається з кожним кадром (частота виклику залежить від архітектури комп’ютера), Lerp буде плавно оновлювати для ігрового об’єкта значення компонента Transform, тобто переміщення або поворот. Звідси і з’являється візуальна плавність та повільність руху об’єкта.

Код програми створено на мові програмування C# у середовищі для розробки ігор Unity. У цьому експерименті бачимо використання Time.deltaTime, за рахунок якого і відбувалося плавне переміщення об’єкту.

Рис. 1. Використання функції Lerp для плавного пересування ігрового об’єкту

Time.deltaTime повертає значення типу float, що означає інтервал у секундах між попереднім і теперішнім кадром. Для сповільнення пересування об’єкту по осі Х між значеннями -1 та 1 це значення було помножено на 0.5f. Далі бачимо інкремент інтерполятору t та його перевірку на перевищення максимального значення. Якщо ж інтерполятор перевищує значення 1.0f,  то ми змінюємо місцями мінімальне і максимальне значення.

Окрім цього deltaTime використовується для незалежності від частоти кадрів. Якщо прибрати це значення, то можна отримати нерівномірних рух ігрового об’єкту [2, с. 99-101].

Як бачимо, Mathf.Lerp приймає 3 аргументи: а — початкове значення, b — кінцеве значення, t — значення інтерполяції між a та b. У цьому експерименті вона використовується для отримання однієї конкретної точки, а не для знаходження цілого ряду проміжних значень від а до b. Під час зміни кадрів функція Lerp знаходить значення точки, яка ділить значення шляху в заданому відношенні [3, с. 210-211].

При t = 0 (або менше) функція повертає а. При t = 1 (або більше) повертається b. При t = 0.5 функція повертає середнє значення між а та b. Під час цього експерименту було виявлено, що t можна вважати значенням відсотка від усієї довжини між максимальним та мінімальним значенням.

Отже, провівши дослідження, я вияснила, що функція Lerp — надійна функція для лінійної інтерполяції, яка використовується при необхідності сповільнити рух ігрового об’єкта. Завдяки цій функції об’єкт спочатку швидко рухається, а далі його швидкість пересування сповільнюється, коли він асимптотично наближається до цілі або до максимального значення. Це підходить для надання плавності та згладжування руху.

Література

  1. Хокинг, Джозеф. Unity в действии. Мультиплатформенная разработка на C# // Питер.  C. 336.
  2. Торн, Алан. Искусство создания сценариев в Unity // Изд-во ДМК.  C. 362.
  3. Jeff W. Murray. C# Game Programming Cookbook for Unity 3D // CRC Press. С. 458.

Перегляди: 445

Коментарі закрито.

To comment on the article - you need to download the candidate degree and / or doctor of Science

Підготуйте

наукову статтю на актуальну тему, відповідно до роздлів журналу

Відправте

наукову статтю на e-mail: editor@inter-nauka.com

Читайте

Вашу статтю на сайті нашого журналу та отримайте сертифікат