Як я візуалізую шари паралакса у редакторі рівнів?


9

Я роблю 2D гру в Unity, але це стосується будь-якого двигуна 2D ігор.

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

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

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

Чи потрібно мені просто висмоктувати його та постійно перемикатися між редактором та запущеною грою, щоб перевірити фони паралакса?


4
Коли я робив таку гру, я просто створив її, щоб ви могли перетягнути камеру в редакторі, і ви могли бачити, як працює паралакс. Я не впевнений, як спеціально зробити щось подібне в Unity.
Тетрад

Відповіді:


1

Я не знайомий з Unity, тому я не можу допомогти вам з конкретними відомостями, але це звучить як те, що вам потрібно - це реалізувати засоби графічного інтерфейсу для точної настройки цих значень під час виконання, скажімо, набору повзунків або числових полів. Буде досить просто реалізувати поля для зміни будь-яких значень, які ви визначаєте (масштаб, швидкість тощо) під час виконання, що дає вам негайний зворотній зв'язок. Для розміщення ви можете використовувати поля або ручне розміщення з перетягуванням кліків (що може бути дещо складніше в реалізації, але набагато інтуїтивнішим).

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


Так, здається, що найкращим способом зробити це редактор рівнів, будь то кодування власного чи в моєму випадку з Unity, налаштування його на роботу з існуючим редактором. Я зашифрував налаштування паралакса окремим об'єктом камери для кожного шару, і камери пересуваються належним чином відносно кожної камери основної камери. Потім використовуйте [ExecuteInEditMode], щоб змусити їх оновлюватись, навіть якщо основна камера затягнута в редактор. Мені просто потрібно пам’ятати, щоб переміщати лише основну камеру безпосередньо.
TenFour04

1

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

Наприклад, відстань об'єкта 10 від передньої камери рухається на 1/10 у фоновому шарі. Об'єкт відстані 2 перемістився б на 1/2 у відповідному шарі тощо.

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