ПроектыФорумУтилиты

Плагины Godot для работы с параллаксом

#0
10:57, 22 ноя 2022

В Godot есть ParallaxBackground для работы с параллаксом. Но он не всегда удобен и неактивен в режиме редактора. По этому сложно расположить объекты на его слоях так, чтобы они сочетались друг с другом.

По этому я сделал два плагина:

PreviewingParallaxBackground
Godot Asset Library: для 3.4+ и для 4.X
GitHub: для 3.4+ и для 4.X
Плагин добавляет новый класс на базе ParallaxBackground, который возвращает отключенную в редакторе подвижность слоёв. Его алгоритм точно такой же, как и в режиме игры (проверял по исходникам 1 и 2). По этому вы можете расположить объекты на слоях точно так, как они будут видны в игре.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Parallax
Godot Asset Library: для 3.4+ и для 4.X
GitHub: для 3.4+ и для 4.X
Плагин добавляет класс Parallax на базе Node2D, который контролирует свою позицию по параллаксу относительно вьюпорта в игре и редакторе. Он поможет вам создавать сложные объекты с эффектом глубины, например, деревья, кусты и и.п. и располагать их потом где угодно. Даже на слоях ParallaxBackground!

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#1
21:37, 9 янв 2023

Портировал плагины на Godot 4.X, добавил ссылки в старт-пост

#2
22:19, 9 янв 2023

Заранее спасибо, в любом случае.

Но я таким не пользуюсь повседневно, и может стоит подробнее объяснить, чем плох стандартный параллакс?

#3
23:36, 9 янв 2023

Der FlugSimulator
> чем плох стандартный параллакс?
Стандартный параллакс в режиме игры ничем не плох - работает как надо. А в режиме редактора слои неподвижны: когда двигаешь уровень во вьюпорте, они остаются на своих местах. По этому невозможно поставить на заднем плане, например, дерево, чтобы оно было прямо за домом на переднем плане. Пользователь вообще не представляет, где в игре окажется это дерево.
Я добавил опциональную подвижность в ParallaxBackground в редакторе. Теперь пользователь может точно расположить дерево за домом. (Если интересно, могу рассказать, почему разработчики сделали его неподвижным в редакторе)

Второй плагин не использует ParallaxBackground. Почему в нем возникла необходимость?
Потому что ParallaxBackground это не Node2D, и у него нет позиции в 2D пространстве. Это просто CanvasLayer. И это значит, что объекты, находящиеся на нем никак не пересекаются с объектами на "основном плане".

Если нам нужно сделать дерево с кроной в несколько слоев глубины, мы могли бы создать 2 ParallaxBackground'а:
- Один расположить на заднем плане (Layer -1)
    - На нем сделать 2 ParallaxLayer's, на каждом из которых расположить по слою листвы
- Второй - на переднем плане (Layer 1)
    - На нем тоже сделать 2 ParallaxLayer's с листвой

Это будет работать, и дерево будет выглядеть впечатляюще. Но попробуй это дерево подвинуть или скопировать! Не получится))) Его части расположены на разных CanvasLayer's.


Таким образом второй плагин дает нам наследника от Node2D, который ведет себя как ParallaxLayer, что позволяет нам создать Node2D-ствол дерева, и в нем сделать 4 Parallax-ноды с листвой. Теперь такое дерево можно таскать и копировать куда угодно.

#4
0:31, 10 янв 2023

Хорошо. Я сам слегка вдали от 2D, но посмотрел народ на реддите вроде поддерживает.
Спасибо за объяснение.

ПроектыФорумУтилиты

Тема в архиве.