Три спрайта одной строкой (моргающих и говорящих)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

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

На главную страницу Книга рецептов Энциклопедии Ren'Py Renpy для чайников Вернуться к началу статьи