Переходы

Переход определяет, как изображение на экране меняется: плавно растворяется, затемняется или сдвигается. Он применяется командой with после изменения сцены.

label mymod_transition_example:
    scene bg ext_square_day
    with fade

    show sl smile pioneer at center
    with dissolve

    sl "Добро пожаловать!"

    hide sl
    with dissolve
    return

scene заменяет сцену и убирает прежние изображения на её слое. show показывает или заменяет отдельное изображение, а hide скрывает его. Сам эффект задаёт with.

Один переход для нескольких изменений

Если фон и персонаж должны появиться одновременно, измените их до одной команды with:

scene bg ext_square_day
show sl smile pioneer at center
with dissolve

Чтобы сначала заменить фон, а затем показать персонажа, примените два перехода:

scene bg ext_square_day
with fade
show sl smile pioneer at center
with dissolve

Запись show sl smile pioneer with dissolve тоже допустима. Она соответствует отдельным командам with None, show и with dissolve: предыдущие накопленные изменения фиксируются перед показом персонажа. Для общего эффекта на несколько изменений удобнее отдельная команда with.

Готовые переходы

Имя Эффект
dissolve Плавное смешивание старой и новой сцены
fade Затемнение до чёрного и появление новой сцены
hpunch Горизонтальное встряхивание экрана
vpunch Вертикальное встряхивание экрана
moveinleft, moveinright Появление нового изображения с края экрана
moveoutleft, moveoutright Уход скрываемого изображения за край экрана
wipeleft, wiperight Замена сцены проходящей по экрану границей

В «Бесконечном лете» также объявлены dspr — короткое растворение для спрайтов, fade2 и fade3 — более длинные затемнения, flash и flash2 — переходы через белый цвет. Их определения находятся в game/globals.rpy; flash также объявлен в game/media.rpy, поэтому его длительность зависит от итогового порядка инициализации.

show dv angry pioneer with dspr
dv "Эй!"
with hpunch

Своя длительность

Создайте переход с уникальным префиксом мода, чтобы не менять общие эффекты игры:

define mymod_slow_dissolve = Dissolve(1.5)
define mymod_fade = Fade(0.5, 0.3, 0.5)
define mymod_flash = Fade(0.1, 0.0, 0.4, color="#ffffff")

label mymod_custom_transition:
    scene bg ext_square_day
    with mymod_fade
    show sl smile pioneer
    with mymod_slow_dissolve
    return

Аргумент Dissolve — длительность в секундах. У Fade три длительности: исчезновение старой сцены, удержание одноцветного экрана и появление новой сцены. В примере mymod_fade занимает суммарно 1,3 секунды.

Изменение без эффекта

with None фиксирует текущее состояние без анимации. Следующий переход начинается от этого состояния:

scene bg ext_square_day
with None
show sl smile pioneer
with dissolve

Здесь фон появляется сразу, а персонаж — плавно. Если убрать with None, фон и персонаж могут попасть в один общий переход.

Переходы управляют сменой состояния сцены. Для непрерывного движения, изменения масштаба и других анимаций используйте трансформации и ATL.

Подробнее: переходы и команда with в документации Ren'Py.

Обновлено