Три спрайта одной строкой (моргающих и говорящих)
Перейти к навигации
Перейти к поиску
init -111:
image nop = Solid("#00000000") # пустой прозрачный фон
image bg rocks = "bg_rocks.png"
# функция для создания и объявления анимированных спрайтов
# с независимым движением глаз и губ
init python:
def new_char(char_name, eyes_pos, lips_pos, long_scnd = 1.0, scnd = 0.1):
# определяем размер тушки персонажа
w, h = renpy.image_size(char_name+".png")
# читаем координаты
ex, ey = eyes_pos
lx, ly = lips_pos
# объявляем картинку имя_персонажа из файла "имя_персонажа.png"
renpy.image(char_name, char_name+".png")
# и анимацию. файл с глазами "имя_персонажа-eyes.png"
renpy.image(char_name+" blink", LiveComposite((w, h), (0, 0), char_name+".png", (ex, ey), Animation("%s-eyes.png"%(char_name), scnd, "nop", long_scnd)))
# файл с губами "имя_персонажа-lips.png"
renpy.image(char_name+" talk", LiveComposite((w, h), (0, 0), char_name+".png", (ex, ey), Animation("%s-eyes.png"%(char_name), scnd, "nop", long_scnd), (lx, ly), Animation("%s-lips.png"%(char_name), scnd*2.0, "nop", scnd*0.5, "%s-lips.png"%(char_name), scnd*2.0, "nop", scnd)))
# создаём анимированные картинки с персонажем одной строкой
# на входе - имя персонажа (и основного файла),
# далее первые числа - координаты глаз и координаты губ
new_char("girl", (90, 210), (120, 280))
# или так: new_char("girl", (90, 210), (120, 280), 0.2, 2.0)
# с другой амплитудой морганий
# должны существовать файлы "charname.png",
# "charname-eyes.png" и "charname-lips.png"
label start:
scene bg rocks
# смотрим не мигая
show girl
"Сначала даже не моргаем."
# моргаем, пока не кликнут мышкой
show girl blink
"Заморгали. Сейчас ещё и заговорим."
# «проверка микрофона»
play music "blabla.mp3"
show girl talk
pause
return
- Ссылка на архив с проектом: test-talk.zip
- Источник: Renpy для чайников: Три спрайта одной строкой (моргающих и говорящих)
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Renpy для чайников | Вернуться к началу статьи |