Динамический фон
Перейти к навигации
Перейти к поиску
Работая над новеллой «Сателлит», я столкнулся с такой проблемой. У меня был динамический фон – плывущие по небу облака и движущийся немного с другой скоростью пейзаж. Всё было замечательно, пока по экрану не начали двигаться спрайты. По завершении движения или при уничтожении спрайта 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
- Ссылка на архив с проектом: test-dynamicbg.zip
- Источник: Renpy для чайников: Динамический фон
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Renpy для чайников | Вернуться к началу статьи |