Как выделить говорящего и отодвинуть молчуна
Перейти к навигации
Перейти к поиску
Говорящий персонаж цветной, выдвигается к центру экрана, молчащий в данный момент собеседник отодвигается (если не стоит точно по центру) и обесцвечивается. Как бы теряет фокус. Сделано с помощью матрицы насыщенности. Есть пара проблем. Первое - персонаж и его выцветшая копия уже должны быть на экране (либо просто копия, но с псевдонимом, оканчивающимся на "_off"). Это решается вызовом $ init_char("имя_персонажа") перед самым диалогом. Второе - переход сделан с помощью прозрачности, поэтому персонажи становятся слегка бесплотными при переходах.
init:
# на сколько пикселей выдвигаться
$ xo = 32
# перемещение и изменение прозрачности
transform _t(a1, a2, xo1, xo2, xa = .5, delay = .5):
xalign xa xoffset xo1 alpha a1 anchor(.5, 1.0)
linear delay xoffset xo2 alpha a2
init python:
# это запускать перед самым стартом диалога,
# чтобы персонаж потом отображался на экране
def init_char(char):
renpy.show(char + "_off", what = char)
renpy.show(char)
# затемнение
def show_off(char, xa = .5, delay = .5, mode_on = False):
xo1, xo2 = (0, 0)
a1, a2 = (1.0, .0)
if xa < .5:
xo2 = -xo
if xa > .5:
xo2 = xo
if mode_on:
a1, a2 = (a2, a1)
xo1, xo2 = (xo2, xo1)
renpy.show(char, at_list = [_t(a1, a2, xo1, xo2, xa, delay)])
renpy.show(char + "_off", what = im.MatrixColor(char + ".png", im.matrix.saturation(.15)), at_list = [_t(a2, a1, xo1, xo2, xa, delay)])
# высветление
def show_on(char, xa = .5, delay = .5):
show_off(char, xa, delay, True)
# убрать персонажа с экрана
def hide_char(char):
renpy.hide(char)
renpy.hide(char + "_off")
label start:
scene bg1
"Встретились два остолопа."
# подготовка
$ init_char("boy")
$ init_char("girl")
# пошел диалог
$ show_on("boy", .33) # цветной тот, кто говорит
$ show_off("girl", .66) # молчащего красим в серый и отодвигаем
"Остолоп" "...А я говорю такой: «Оппа!»"
$ show_off("boy", .33)
$ show_on("girl", .66)
"Остолопка" "Иди-ка поешь укропа."
$ show_on("boy", .33)
$ show_off("girl", .66)
"Остолоп" "Ты кого назвала укропом!"
$ show_on("girl", .66)
"«Тяжело говорить с остолопом...»"
$ hide_char("boy")
$ hide_char("girl")
with dissolve
pause
return
- Сссылка на архив с тестовым проектом: test-persact.zip
- Источник: Renpy для чайников: Как выделить говорящего и отодвинуть молчуна
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Renpy для чайников | Вернуться к началу статьи |