Я делаю 2D-игру в Unity, но это применимо к любому движку 2D-игр.
Если я реализую многоплоскостной параллакс с помощью орфографических камер, трудно разложить спрайты фонового слоя и знать, где они будут совпадать со спрайтами в других слоях.
Моим первым инстинктом было использование нескольких камер, по одной на каждый слой, и уменьшение скорости перемещения камер для фоновых слоев. Это позволяет избежать перемещения всех фоновых спрайтов в каждом кадре. Проблема в том, что слой, который движется с половинной скоростью, при просмотре в редакторе займет половину пространства основного слоя. Поэтому сложно определить, где размещать спрайтов, когда вы выкладываете игру. Проблема экспоненциально ухудшается по мере увеличения количества слоев.
Как мне обойти это? Я пытался обратно масштабировать слои в соответствии с их предполагаемой скоростью движения, работая с ними в редакторе. Это помещает все фоновые спрайты в правильные места относительно основного слоя, но они ужасно искажены.
Нужно ли просто смириться с этим и постоянно переключаться между редактором и запущенной игрой, чтобы проверить фоны параллакса?
источник
Ответы:
Я не знаком с Unity, поэтому не могу помочь вам со спецификой, но, похоже, вам нужно реализовать средства графического интерфейса пользователя для точной настройки этих значений во время выполнения, например, с помощью набора ползунков или числовых полей. Было бы довольно просто реализовать поля для изменения любых значений, которые вы определяете (масштаб, скорость и т. Д.) Во время выполнения, что дает вам немедленную обратную связь. Для размещения вы можете использовать поля или ручное размещение с помощью перетаскивания (что может быть немного сложнее, но гораздо более интуитивно понятно).
Это дает вам полный контроль без компиляции и запуска кода для каждой небольшой части изменения. Когда вы, наконец, придете к тому, что вы счастливы, используйте эти значения в своем списке констант. Если это слишком сложно из-за количества переменных, которые вы редактируете (скажем, многочисленные местоположения спрайтов на многочисленных уровнях), вы захотите реализовать это в редакторе уровней, я полагаю, с той же функциональностью ручной настройки, но с Результат создания и хранения данных скорректирован.
источник
Идея: я думаю, что камеры для переднего слоя достаточно. Размещение спрайтов на расстоянии от этого на плоскости z, а изменение расстояния дает вам долю, на которую можно переместить этот задний слой.
Например, расстояние до объекта 10 от фронтальной камеры перемещается на 1/10 в фоновом слое. Объект с расстоянием 2 будет двигаться на 1/2 в соответствующем слое и т. Д.
источник