Операции с изображениями (Image)
Объявление изображений

Неотъемлемой частью всех визуальных новелл, несомненно, является изображение.
Работа с изображениями начинается с объявления в скрипте. Для объявления спрайтов, фонов и CG-артов необходимо в скрипте написать следующее:
Код
    image sprite = "sprite.png"


Где sprite, название изображения, которым будет вызываться спрайт/фон/CG в игру.

А "sprite.png", расположение самого изображения в директории игры.

Так же можно объявлять и анимацию, которая может состоять как из двух спрайтов, так и из 256. Это предел объявлений изображений для одной анимации. Но предупреждаю, большое количество спрайтов будут долго прогружаться с первым выводом анимации на экран.

Непосредственно объявление:
Код
  ....image sprites = Animation("sprite1.png", 0.2,
                                            "sprite2.png", 0.2,  
                                            "sprite3.png", 0.2,  
                                            "sprite4.png", 0.2)

Где sprites , название вызываемой анимации

Цифры (0.2), это период появления каждого кадра. К примеру, последнему кадру можно присвоить время (999.0), и тогда получится, что после первого проигрывания анимации, последний кадр остановится на 999 секунд.

"sprite1.png", ..., "sprite4.png", название объявляемых изображений.
P.S.Изображение также могут лежать и в папках, тогда полный путь будет выглядеть примерно так:
"catalog/sprite1.png"

Обычно объявление находиться в верхней части скрипта, выше label start:
Но я советую выносить объявления в отдельный скрипт.

Для этого:

1.Находясь в редакторе выбрать в верхнем меню вкладку File (Файл)
2.Нажать на:
2.1. Для Editra - New Tab (Ctrl + N)
2.2. Для jEdit - Создать (N)
2.3. Для блокнота - Создать (Ctrl + N)
3. Написать объявления изображений
4. Сохранить назвав (название_скрипта).rpy
P.S.S. У меня это image.rpy

Вывод изображений в игре

После того, как мы научились объявлять изображения и анимации, пора научиться вызывать их в игре.

Спрайты, так же как и фоны, а также анимации, вызываются внутри label ...:

Код
    show sprite

Вызывает изображение/анимацию, накладывается поверх уже вызванных изображений, если таковы имеются.

Код
    scene sprite

Вызываясь, закрывает все уже вызванные спрайты/фоны/анимации. Полезно для быстрой смены фона.

Код
    hide sprite

Скрывает изображение.









©Программист Celestial Novels

Автор материала: Sota
Материал от пользователя сайта.



Ren'Py 22.09.14 15515 Sota CG, Спрайты, туториал, изображение, RenPy, азы, операция с изображениями, программирование, фоны, гайд 4.9/9

Комментарии (37):
1
1 DeXP   (22.09.14 23:33)
119
"Вывод всех трёх спрайтов одним эффектом плавного появления"
Спасибо, очень порадовало. Когда то было надо, по-быстрому не смог найти...

1
2 barsunduk   (23.09.14 01:47)
860
тоже недавно разбирался с выводом изображений.
был такой код:

scene bg sky with dissolve
show bird small:
..xalign 0.5 yalign 0.0 rotate 0
..alignaround (0.5, 0.5)
..linear 5.0 yalign 0.0 clockwise circles 1 rotate 360
..repeat
"Лети, бдичга!"

bird small - имя спрайта. может быть просто bird, смотря как объявите.
птичка должна смотреть вправо:

тогда код сработает правильно и она будет кружить по экрану.
вот так:

0
30 TesCambl   (26.06.16 16:52)
33994
Это из "Сказка для Дарины"?

0
3 HIman   (09.10.14 15:30)
А как можно скроллировать фон, например если изображение в 2-3 раза больше по длинне выводимого окна или по высоте?
Как задать направление скролла, скорость прокрутки, повтор скролирования?
Есть ли вообще такая возможность?

2
4 barsunduk   (09.10.14 22:57)
860
# я бы с помощью анимаций и трансформаций сделал:
# инициализация картинки
# у меня она размером 1200x600,
# так что скролл будет горизонтальным
image bg big = "gfx/bg_big.jpg"

label start:
....# показываем картинку, после двоеточия - анимация
....show bg big:
........# задаём выравнивание по левому краю
........# (Xalign - горизонт, 1.0 - левый край)
........xalign 0.0
........# линейно меняем за 2 секунды
........# выравнивание на правый край
........linear 2.0 xalign 1.0
........# и обратно
........linear 2.0 xalign 0.0
........# зацикливаем
........repeat
....# можно убрать repeat и поставить паузу,
....# чтобы текстовое окно не сразу появлялось
....pause 4.0
...."Готово."
....return

0
5 Tasuke   (10.03.15 16:45)
4555
А у меня вот такой вопрос: допустим я объявил переход, вызвал с ним сцену - всё отлично. Затем поверх сцены вызвал спрайт персонажа и снова вызвал переход на другую сцену. И конечно, сцена начала изменятся целиком, вместе со спрайтом персонажа. А мне бы хотелось сотворить нечто такое: чтобы бекграунд менялся, а спрайт по-прежнему оставался нетронутым. Вопрос вроде простой, но хотелось бы разобраться.

1
6 barsunduk   (10.03.15 20:03)
860
Код
init python:
  # лениво объявлять все картинки вручную
  config.automatic_images = [" ", "_", "/"]
  config.automatic_images_minimum_components = 1
  config.automatic_images_strip = ["images"]
label start:
  scene bg first
  show eileen happy with dissolve
  "Бла-бла-бла..."
  show bg second with dissolve
  pause
  return

0
7 Tasuke   (13.03.15 14:03)
4555
делаю также - срайт Эйлин пропадает за фоном, как раньше...
[code]
image green = "2.png"
image red = "3.png"
image el="img/eileen_happy.png"

define e = Character('Эйлин', color="#c8ffc8", show_two_window=True)

label start:
scene green with dissolve
show el
show red with dissolve
pause
return
[/code]
после вызова бекгаунда red спрайт Эйлин пропадает за ним. Что не так? Или я недоразвитый идиот?

1
8 barsunduk   (13.03.15 16:49)
860
не так же делаешь, совсем не так же. не работает потому, что тег надо использовать какой-нибудь. например, добавить перед фонами bg, как в примере. тогда с картинками bg green и bg red renpy будет работать как с одним спрайтом bg (с разными его состояниями, как eileen happy и eileen norm). если уже есть такой спрайт на сцене (bg green), то bg red заменит старый bg (который green) на новый bg (red), а не выведет новый (red) поверх всех других спрайтов.

0
9 Tasuke   (13.03.15 17:33)
4555
А, так вот в чём дело было) Спасибо, я идиот))

0
10 Lucy   (01.04.15 21:05)
5432
Прошу прощения может это уже спрашивали, но я не нашла. Я хотела бы узнать о том как изменить картинку в меню? funny

1
11 barsunduk   (01.04.15 23:38)
860
плохо искали, видимо...
навскидку могу назвать как минимум три способа поменять фон главного меню.


  • 1 СПОСОБ:
    в файле options.rpy найти строку mm_root = "#393939" и вместо шестнадцатиричного значения цвета фона указать картинку для фона. пример:
    Код
    mm_root = "bg_mm.jpg",

  • 2 СПОСОБ:
    то же самое делает следующая строка в разделе «init:» любого файла *.rpy:
    Код
    $ style.mm_root.background = "bg_mm.jpg"

  • 3 СПОСОБ:
    так же можно открыть файл screens.rpy, найти раздел «main_menu» и после «style "mm_root"» добавить строку:
    Код
    add "bg_mm.jpg"

    ну и ещё можно сначала создать анимацию и подсовывать её в качестве фона вместо имени файла. но вам пока рано...

0
12 Lucy   (02.04.15 13:51)
5432
love прошу прощения за мою не внимательность. Спасибочки вам funny cry

1
13 barsunduk   (02.04.15 14:59)
860
это не невнимательность, а всего-лишь недостаток опыта работы с поисковыми системами.
для того чтобы успешно находить ответы, например, в гугле, стоит начинать запрос со слова "renpy" и запомнить несколько терминов, по которым вы чаще всего будете искать подробности. так же следует учесть, что на английском ответ найти в разы легче.
например, я хочу узнать, как поменять шрифт в заголовке текстового окна. захожу в переводчик и узнаю, что шрифт - это font. а так же помню, что окно с текстом называется textbox - коробочка с текстом))
в итоге на запрос renpy saybox font по первой же ссылке находится тема «Customizing Textbox Appearance», где английским по белому написано, что для смены шрифта в окошке с именем говорящего, нужно добавить строку типа:
Код
style.say_label.font = "myfont.tff"

знаю, что меня никто не просил рассказывать очевидные вещи о том, как нужно гуглить. но лучше научиться этому, и куча вопросов сразу отпадёт сама собой.
удачи в новеллостроении!

0
14 Lucy   (02.04.15 18:18)
5432
Еще раз спасибо добрый человек, вдохновения вам тоже happy

0
15 Leshiy133   (13.08.15 01:41)
8334
Здравствуйте!
Подскажите, пожалуйста, можно ли в эффектах фона как-то задать появление изображения по "циферблату"? Ну, как бы отобразить в частности Начало Нового Дня в игре, чтобы изображение появлялось как бы вслед стрелки часов, быстро махнувшей по кругу =)
Надеюсь, кто-нибудь понял, что я имею в виду. Картинка загружается словно по кругу справа налево озаряя "чёрный экран" своим содержанием, буквально за секунду) Типа "часики" эффект какой-нибудь)

Спасибо!
funny

1
16 Небель   (14.08.15 16:59)
9857
Имеется вопрос: есть вытянутые изображения, которые мы умеем прокручивать по всей длине. Всё замечательно, но если мы делаем комнату с изображениями (класс Gallery), то как быть с этой прокруткой (он просто берёт и показывает низ изображения)? Если нельзя прокрутить, то можно ли заставить его показать картинку по заготовленным вырезанным кусочкам (видел в Katawa Shoujo, как показывались так несколько картинок в одной)?
Заранее спасибо.

0
17 Alexander   (05.09.15 22:31)
13132
Код получается такой

# Объявляйте изображения здесь, используя оператор image.
# например, image eileen happy = "eileen_happy.png"
image Castle "Castle.png"

# Определение персонажей игры.
define e = Character('Эйлин', color="#c8ffc8")

# Игра начинается здесь.
label start:
show Castle

e "Вы создали новую игру Ren'Py."

e "Добавьте сюжет, изображения и музыку и отправьте её в мир!"

return

Но при запуске выдаёт ошибку
File "game/script.rpy", line 5: expected '=' not found.Помогите пожалуйста

0
19 Alex_Apple   (18.09.15 13:38)
12449
Ты забыл знак =
image Castle = "Castle.png"

0
18 Leshiy133   (14.09.15 17:54)
8334
Привет!
А мне приснилось или в РенПи есть функция ЗАТЕМНЕНИЯ спрайта под "ночь"? оО такое ощущение, что я об этом где-то прочитал =) А теперь найти не могу, под "ночные" BG можно спрайты Затемнить в RenPy?
funny

0
20 Alex_Apple   (18.09.15 13:41)
12449
Может это?
http://renpyfordummies.blogspot.ru/2015/02/blog-post.html

0
21 Leshiy133   (18.09.15 14:06)
8334
Оу, попробую) Тут для всей сцены разом, правда (БГ и Спрайт), а я предполагал только для спрайта.
Но, может, так даже удобнее будет, хм) Особенно в плане коридоров =) День или ночь =) Спасибо, надо потестить!
love

0
22 CompanyBananaLove   (22.11.15 11:54)
15332
Я наверно слепая wow , но я не могу найти, как поместить 3-их персонажей на сцену. 1 слева 2-й справа 3-й по середине!??! как!???!ъ smile_59

0
23 Alex_Apple   (25.11.15 13:36)
12449
Атрибуты -AT-
Открываешь и смотришь

0
24 RedCupcake   (22.12.15 18:16)
17525
А можно в Ренпи менять размер спрайта?

0
26 Alex_Apple   (08.02.16 06:53)
12449
Zoom не подходит?

0
25 Simfo   (23.01.16 17:32)
23381
Подскажите, я правильно понимаю, что в renpy при объявлении изображений обязательно должны совпадать имя файла и текст в скрипте?
Например так:
image bg crab = "images/crab.jpg"
scene crab
В таком варианте все работает.

Если имя файла отличается от переменной, то изображение не находится.
Например так:
image bg beach = "images/samui_34.jpg"
scene beach
Картинка не находится.

Если переименовать файл samui_34.jpg в beach.jpg и соответственно изменить скрипт, то все ок.
Не нашел в документации явного указания на это.
Заранее спасибо.

0
27 Alex_Apple   (08.02.16 07:10)
12449
Нет не обязательно, но оба варианта не будут работать. Вы создали изображение bg crab, вот и вызывайте bg crab, а не просто crab.

0
28 Annike   (27.02.16 10:52)
21310
Я возможно совсем невнимательный и непонятливый...Но в уроках по было сказано, что "Фоновые изображения должны быть того же размера, что и выбранное для игры разрешение. По умолчанию — 800х600 пикселей" . Отсюда вытекает вопрос, можно ли менять разрешение ? Потому что я рисую в SAI и если выбирать в размерах такой формат, могу качественно прорисовать, в основном лишь фоны, персонажей никак, в силу того, что детально прорисовывать лица невозможно, причиной чему является пикселизация, которая происходит при приближении. Надеюсь на ответ, заранее благодарю. smile_64 smile_64 smile_57 smile_56 smile_32 smile_76

0
29 Bruzer   (29.05.16 18:30)
16173
Открываете Option.rpy и там указано расширение.
По умолчанию находится на 20-21 строке кода.

0
31 nastia_manko   (05.07.16 20:25)
12294
ВСЕ НАПИСАЛА ВЕРНО:
image bg2 = "2.jpg"
ФАЙЛ ВЕСИТ МЕНЬШЕ 1.00 МБ(75.2 КБ)
НО СУК. ОН НЕ РАБОТАЕТ
перепробовала ВСЕ!

angry angry angry

0
32 nastia_manko   (05.07.16 20:47)
12294
УПС Я ОШИБЛАСЬ
image bg2 = "2.jpg"
scene bg 2
kek joke joke joke

0
33 Darling   (08.07.16 19:01)
35377
Добрый день! А какое разрешение для игры самое оптимальное? Если 1920х1080 - это будет нормально?

1
34 ShaylinCat   (22.08.16 05:44)
38761
Сложно сказать...
Многие любят привычный маленький экран 800x600, к тому же под него проще рисовать. Другие любят разрешение повыше и вообще пошире.
Я предпочитаю 1280x720 - такое разрешение, на мой взгляд, оптимальное. Оно и большое, и у всех в экраны поместится, и не слишком надоест любителям маленьких экранов.
В принципе, разрешение можно сделать какое угодно, но помните, что мало у кого есть такой огромный экран, разрешением 1920x1080.
Но, конечно, это ваш выбор.

0
35 merlad   (19.11.16 12:06)
47286
помогите не смог найти, как вывести информацию из переменной в картинку.
у меня мини игра где есть счет побед,проигрышей и ничья, но я не знаю как эту информацию вывести на экран игры например в правый угол.

0
36 Slenderman   (04.12.16 13:04)
23387
У меня тоже есть вопрос. У меня есть спрайты персонажей, а лица от них отдельно. Как их соединять воедино?

0
37 QwiziRAM   (05.12.16 09:20)
22148
А что требуется, чтобы поместить поверх обычной картинки, например, анимацию падения лепестков сакуры. Надо чтобы фон анимации был прозрачен и просто класть поверх или есть что-то еще?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]