Скролл любого, даже не бесшовного фона
Перейти к навигации
Перейти к поиску
# как заскроллить с произвольной скоростью любой фон
# и при этом сделать его бесшовным?
# очень просто:
# отзеркалить и состыковать одинаковыми сторонами
# пример для движения влево
init:
image sky = "images/sky.jpg"
# трансформации для перемещения и отзеркаливания
transform scroll_in(delay = 10.0):
xpos config.screen_width xzoom -1.0
linear delay xpos 0
pause delay
repeat
transform scroll_in2(delay = 10.0):
xpos config.screen_width
pause delay
linear delay xpos 0
repeat
transform scroll_out(delay = 10.0):
xpos 0
linear delay xpos -config.screen_width
pause delay
repeat
transform scroll_out2(delay = 10.0):
xpos config.screen_width
pause delay
xpos 0 xzoom -1.0
linear delay xpos -config.screen_width
repeat
init python:
# функция объединаяет трансформации
# выводит на экран
def _scroll(img, effect = None, delay = 10.0):
renpy.show(img + "1", what = ImageReference(img), at_list = [scroll_in(delay)])
renpy.show(img + "2", what = ImageReference(img), at_list = [scroll_out(delay)])
renpy.show(img + "3", what = ImageReference(img), at_list = [scroll_in2(delay)])
renpy.show(img + "4", what = ImageReference(img), at_list = [scroll_out2(delay)])
renpy.with_statement(effect)
def _hide(img, effect = None):
renpy.hide(img + "1")
renpy.hide(img + "2")
renpy.hide(img + "3")
renpy.hide(img + "4")
renpy.with_statement(effect)
# всё, теперь можно в любом месте скрипта
# одной строкой отображать движущийся бесшовный фон
label start:
scene black
# отображаем (параметры можно не указывать)
$ _scroll("sky", Dissolve(2.0), 15)
pause # наслаждаемся облаками
# а теперь прячем наши бегущие картинки
$ _hide("sky", Dissolve(2.0))
pause .5
return
- Ссылка на архив с проектом: test-bgscroll.zip
- Источник: Renpy для чайников: Скролл любого, даже не бесшовного фона
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Renpy для чайников | Вернуться к началу статьи |