Реализация эффекта двоения в глазах (Implementing a Double Vision Effect)
Следующий код создает расплывчатый эффект "двоения". Этот эффект использовался в играх Gakuen Redux и Секретарь смерти.
Основная идея заключается в том, что вы создаете наполовину непрозрачную версию фона, а затем показываете её в случайном месте после отображения фона. Это не значит, что вызов этого эффекта, во время повествования, требует два оператора, нужен только один.
init:
image cs2 = Image("b_city_scape_02.gif")
transform transpa:
alpha 0.5
python hide:
def gen_randmotion(count, dist, delay):
import random
args = [ ]
for i in range(0, count):
args.append(anim.State(i, None,
Position(xpos=random.randrange(-dist, dist),
ypos=random.randrange(-dist, dist),
xanchor='left',
yanchor='top',
)))
for i in range(0, count):
for j in range(0, count):
if i == j:
continue
args.append(anim.Edge(i, delay, j, MoveTransition(delay)))
return anim.SMAnimation(0, *args)
store.randmotion = gen_randmotion(5, 5, 1.0)
init python:
def double_vision_on(picture):
renpy.scene()
renpy.show(picture)
renpy.show(picture, at_list=[transpa,randmotion], tag="blur_image")
renpy.with_statement(dissolve)
def double_vision_off():
renpy.hide("blur_image")
renpy.with_statement(dissolve)
label start:
$ double_vision_on("cs2")
"Показано как двоится в глазах (когда пьян)."
$ double_vision_off()
"Ох. Теперь я в порядке."
В вышеуказанном коде, этот оператор, который фактически производит эффект двоения во время повествования:
$ double_vision_on("cs2")
Однако это прерывает эффект. Это равнозначно оператору hide для изображения "blur_image":
$ double_vision_off()
hide blur_image
Как вы могли заметить, эти функции Python используют аналогичные операторы языка Ren'Py в Python. Для получения дополнительной информации о Python и аналогах оператора Ren'Py, документации Ren'Py:
init python:
def double_vision_on(picture):
# renpy.scene() и renpy.show() похожи на "scene". В одиночку, renpy.show() подобен "show".
renpy.scene()
renpy.show(picture)
# at_list аналогичен "at" и tag= на подобии "as".
# Не подходит для определения изображения с тем же тегом, что и эта функция
renpy.show(picture, at_list=[transpa,randmotion], tag="blur_image")
# renpy.with_statement() подобен "with".
# Я добавил это, потому что сделал плавным эффект в начале (и в конце).
renpy.with_statement(dissolve)
def double_vision_off():
# renpy.hide() все равно, что "hide"
renpy.hide("blur_image")
renpy.with_statement(dissolve)
Источник[править | править код]
Статья "Implementing a Double Vision Effect" на английском языке
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Книга рецептов Ren'Py | Вернуться к началу статьи |