5.1 KiB
Effects Engine — анимированные визуальные эффекты для сцен
Effects Engine позволяет сценарию показать поверх сцены короткий визуальный эффект: вспышку, дым, искры, волшебное свечение. Эффект — это маленькая сцена Godot, которую мод кладёт в свою папку effects/; сценарий запускает эффект по имени, и тот остаётся на экране, пока не закончится сам или не кончится диалог.
Это мод-движок, у которого нет ничего своего на экране. Входящие в проекты игры пока не содержат ни одной сцены-эффекта, поэтому во время игры вы эффект не встретите; мод существует для авторов, которые хотят такой добавить.
Как эффект появляется
- В сценарии выполняется строка
effect <имя>. - Effects Engine ищет сцену
effects/<имя>.tscnсреди загруженных модов. - Эффект ложится поверх картинки сцены — выше фона и его предметов, ниже текстового окна — и проигрывается.
- Когда заканчивается диалог, запустивший эффект, тот убирается, если не убрался сам раньше.
Сценарий эффекта не ждёт: следующая строка показывается сразу.
Авторам: добавить эффект
Положите сцену эффекта в свой мод:
my_mod/
└── effects/
└── sparks.tscn
Запустите из сценария:
text "Лампа мигнула."
effect sparks
text "В темноте что-то шевельнулось."
end
Моды должны быть папками. Сцены Godot загружаются только из мода, установленного папкой. У мода, распространяемого архивом .zip, эффекты пропускаются с предупреждением в логе.
Кубики для сцены эффекта
Effects Engine даёт три способа анимировать кадры внутри сцены эффекта:
- Набор кадров с перетеканием — узел со скриптом
EffectDataSet, список картинок-кадров иAnimationController, который растворяет один кадр в другом. Скорость и время растворения задаются в инспекторе; кадры проигрываются один раз, и эффект убирает себя сам. - Спрайт-лист в шейдере —
EffectAnimatorпрокручиваетTextureRectс материалом кадровой простыни через заданное число кадров за заданное время. - Спрайт-лист без шейдера —
EffectAnimNodeлистает горизонтальный спрайт-лист (ширина кадра = ширина листа / число кадров) и в конце убирает себя. Его можно создать и из кода:EffectAnimNode.SpawnOn(target, sheet, frameCount, seconds).
Набор кадров и спрайт-лист без шейдера растягиваются на всю сцену, поэтому кадры, нарисованные под размер сцены, совпадают с фоном.
Первый эффект без кода
Простейший эффект — сцена, у которой в корне TextureRect с картинкой, растянутой на весь экран, — например, полупрозрачное свечение. Он появляется по effect <имя> и исчезает, когда кончается диалог.
Если что-то пошло не так
- Ничего не появляется, а в логе — что эффект не найден. Файл должен лежать как
effects/<имя>.tscnв моде, входящем в игру, и имя в сценарии должно совпадать. - Эффект работает в разработке, но не у игроков. Мод был опубликован архивом
.zip; публикуйте папкой. - Эффект не исчезает. Он висит, пока не кончится его диалог; завершите диалог или соберите эффект из блоков набора кадров или спрайт-листа — они убирают себя, когда заканчиваются.