Работая над новеллой «Сателлит», я столкнулся с такой проблемой. У меня был динамический фон – плывущие по небу облака и движущийся немного с другой скоростью пейзаж. Всё было замечательно, пока по экрану не начали двигаться спрайты. По завершении движения или при уничтожении спрайта Renpy перерисовывает фон. А значит, анимация запускается заново. Происходит рывок. Допустим тучки прошли только треть пути, и тут их возвращают на исходную. Выглядит это очень некрасиво. Но чтобы фон не перерисовывался, его можно засунуть в экран, который будет выводиться прямо поверх фона, но под спрайтами. Как это сделать, видно из кода ниже.
init -3 python: # окно игры в центре экрана import os os.environ['SDL_VIDEO_CENTERED'] = '1' # автоматическое объявление изображений config.automatic_images_minimum_components = 1 config.automatic_images = [' ', '_', '/'] config.automatic_images_strip = ['images'] init: # трансформация для перемещения фона transform _moveleft(delay=7.5): xalign 1.0 linear delay xalign 0.0 repeat # экран с фоном screen scr_bg: add "sky" at _moveleft(15) add "solt" at _moveleft label start: scene black # показать фон show screen scr_bg(_layer="master") with dissolve # движение спрайта show mtt at truecenter with easeinright pause .25 hide mtt with easeoutleft # спрятать фон $ renpy.hide_screen("scr_bg", layer="master") with dissolve return
Комментарии
Отправить комментарий