Як здійснити прокрутку паралакса у 2D?


Відповіді:


20

Розділіть положення кожного шару на "відстань", яку ви бажаєте від камери.

Наприклад: Створіть пару змінних для відображення положення камери cameraXта cameraY. Встановіть їх рівним положенню свого персонажа, можливо, додавши трохи додатково у напрямку руху.

Основний шар просто розміщувався б на

mainLayer.x = -cameraX;

середній шар на щось подібне

middleLayer.x = -cameraX * 0.5;

і далекий шар при

farLayer.x = -cameraX * 0.2;

Змініть константи за потребою.


3
Що сказав Ієн, плюс я беру "коефіцієнт паралакса" (1, 0,5 і 0,2 в коді Іена) і роблю його параметром, що описує мої шари, таким чином я можу налаштувати тонкість паралакса (або під час виконання).
Трой Гілберт

6

В основному ви хочете, щоб об'єкти рухалися швидше, чим ближче вони до "камери". Як ви реалізуєте це, залежати від вас.

Я присвоюю кожному моєму шару глибину, а потім, прокручуючи сцену, для кожного шару поділяю цю прокрутку на глибину шару, так що шари, що знаходяться далі, рухаються повільніше.


5

Потрібно прокручувати шар, який "далі назад", на частку швидкості шару переднього плану. Половина швидкості означає подвоєну відстань. Інші ефекти, такі як тонування для імітації туману тощо, можуть також додати до ілюзії.


1

Найкращий спосіб зробити це - просто викласти спрайти у вигляді квадратиків, розміщених у форматі 3D. "Ігровий процес" може відбуватися в одній площині, тоді як фон і передній план можна розміщувати ближче або далі в 3d-просторі. Таким чином, ефект паралакса обробляється для вас, без того, щоб робити якесь спеціальне кодування :-)


3
Якщо ви це зробите, вам доведеться або масштабувати віддалені квадратики для компенсації масштабування відстані, або встановити матрицю проекції, яка не застосовує жодної перспективи. Можливо, просто простіше перекласти квадратики самостійно.
чудовий

0

Зробіть прокрутку нижнього шару, віднімаючи його положення, намалюйте середній шар як звичайний, а верхній шар прокрутіть зі швидкістю нижнього шару, розділеного на два.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.