Сайт Anivisual.net закрыт

Он продолжит функционировать в виде архива. Новые материалы добавлять нельзя.

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

Операции с изображениями (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
18
Декабрь
65
4.6
83872
Добавлять комментарии могут только зарегистрированные пользователи.

Комментарии к записи: 64

avatar
#1 DeXP
119
в 22:33 (22/Сен/2014)
1
"Вывод всех трёх спрайтов одним эффектом плавного появления"
Спасибо, очень порадовало. Когда то было надо, по-быстрому не смог найти...
avatar
#2 barsunduk
860
в 00:47 (23/Сен/2014)
4
тоже недавно разбирался с выводом изображений.
был такой код:

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, смотря как объявите.
птичка должна смотреть вправо:

тогда код сработает правильно и она будет кружить по экрану.
вот так:
avatar
#30 TesCambl
33994
в 15:52 (26/Июн/2016)
0
Это из "Сказка для Дарины"?
avatar
#3 HIman
в 14:30 (09/Окт/2014)
0
А как можно скроллировать фон, например если изображение в 2-3 раза больше по длинне выводимого окна или по высоте?
Как задать направление скролла, скорость прокрутки, повтор скролирования?
Есть ли вообще такая возможность?
avatar
#4 barsunduk
860
в 21:57 (09/Окт/2014)
3
# я бы с помощью анимаций и трансформаций сделал:
# инициализация картинки
# у меня она размером 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
avatar
#5 Tasuke
4555
в 15:45 (10/Мар/2015)
0
А у меня вот такой вопрос: допустим я объявил переход, вызвал с ним сцену - всё отлично. Затем поверх сцены вызвал спрайт персонажа и снова вызвал переход на другую сцену. И конечно, сцена начала изменятся целиком, вместе со спрайтом персонажа. А мне бы хотелось сотворить нечто такое: чтобы бекграунд менялся, а спрайт по-прежнему оставался нетронутым. Вопрос вроде простой, но хотелось бы разобраться.
avatar
#6 barsunduk
860
в 19:03 (10/Мар/2015)
1
Код
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
avatar
#7 Tasuke
4555
в 13:03 (13/Мар/2015)
0
делаю также - срайт Эйлин пропадает за фоном, как раньше...
[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 спрайт Эйлин пропадает за ним. Что не так? Или я недоразвитый идиот?
avatar
#8 barsunduk
860
в 15:49 (13/Мар/2015)
1
не так же делаешь, совсем не так же. не работает потому, что тег надо использовать какой-нибудь. например, добавить перед фонами bg, как в примере. тогда с картинками bg green и bg red renpy будет работать как с одним спрайтом bg (с разными его состояниями, как eileen happy и eileen norm). если уже есть такой спрайт на сцене (bg green), то bg red заменит старый bg (который green) на новый bg (red), а не выведет новый (red) поверх всех других спрайтов.
avatar
#9 Tasuke
4555
в 16:33 (13/Мар/2015)
0
А, так вот в чём дело было) Спасибо, я идиот))
avatar
#10 Lucy
5432
в 20:05 (01/Апр/2015)
0
Прошу прощения может это уже спрашивали, но я не нашла. Я хотела бы узнать о том как изменить картинку в меню? funny
avatar
#11 barsunduk
860
в 22:38 (01/Апр/2015)
1
плохо искали, видимо...
навскидку могу назвать как минимум три способа поменять фон главного меню.


  • 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"

    ну и ещё можно сначала создать анимацию и подсовывать её в качестве фона вместо имени файла. но вам пока рано...
avatar
#12 Lucy
5432
в 12:51 (02/Апр/2015)
0
love прошу прощения за мою не внимательность. Спасибочки вам funny cry
avatar
#13 barsunduk
860
в 13:59 (02/Апр/2015)
2
это не невнимательность, а всего-лишь недостаток опыта работы с поисковыми системами.
для того чтобы успешно находить ответы, например, в гугле, стоит начинать запрос со слова "renpy" и запомнить несколько терминов, по которым вы чаще всего будете искать подробности. так же следует учесть, что на английском ответ найти в разы легче.
например, я хочу узнать, как поменять шрифт в заголовке текстового окна. захожу в переводчик и узнаю, что шрифт - это font. а так же помню, что окно с текстом называется textbox - коробочка с текстом))
в итоге на запрос renpy saybox font по первой же ссылке находится тема «Customizing Textbox Appearance», где английским по белому написано, что для смены шрифта в окошке с именем говорящего, нужно добавить строку типа:
Код
style.say_label.font = "myfont.tff"

знаю, что меня никто не просил рассказывать очевидные вещи о том, как нужно гуглить. но лучше научиться этому, и куча вопросов сразу отпадёт сама собой.
удачи в новеллостроении!
avatar
#14 Lucy
5432
в 17:18 (02/Апр/2015)
0
Еще раз спасибо добрый человек, вдохновения вам тоже happy
avatar
#15 Leshiy133
8334
в 00:41 (13/Авг/2015)
0
Здравствуйте!
Подскажите, пожалуйста, можно ли в эффектах фона как-то задать появление изображения по "циферблату"? Ну, как бы отобразить в частности Начало Нового Дня в игре, чтобы изображение появлялось как бы вслед стрелки часов, быстро махнувшей по кругу =)
Надеюсь, кто-нибудь понял, что я имею в виду. Картинка загружается словно по кругу справа налево озаряя "чёрный экран" своим содержанием, буквально за секунду) Типа "часики" эффект какой-нибудь)

Спасибо!
funny
avatar
#39 Craft_Scripts_Game
48583
в 10:02 (30/Дек/2016)
0
Так сделать можно, но нужно само изображение с таким эффектом хотя может быть есть такой и встроенный эффект. Надо поискать.
avatar
#16 Небель
9857
в 15:59 (14/Авг/2015)
1
Имеется вопрос: есть вытянутые изображения, которые мы умеем прокручивать по всей длине. Всё замечательно, но если мы делаем комнату с изображениями (класс Gallery), то как быть с этой прокруткой (он просто берёт и показывает низ изображения)? Если нельзя прокрутить, то можно ли заставить его показать картинку по заготовленным вырезанным кусочкам (видел в Katawa Shoujo, как показывались так несколько картинок в одной)?
Заранее спасибо.
avatar
#17 Alexander
13132
в 21:31 (05/Сен/2015)
0
Код получается такой

# Объявляйте изображения здесь, используя оператор 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.Помогите пожалуйста
avatar
#19 Alex_Apple
12449
в 12:38 (18/Сен/2015)
0
Ты забыл знак =
image Castle = "Castle.png"
avatar
#18 Leshiy133
8334
в 16:54 (14/Сен/2015)
0
Привет!
А мне приснилось или в РенПи есть функция ЗАТЕМНЕНИЯ спрайта под "ночь"? оО такое ощущение, что я об этом где-то прочитал =) А теперь найти не могу, под "ночные" BG можно спрайты Затемнить в RenPy?
funny
avatar
#20 Alex_Apple
12449
в 12:41 (18/Сен/2015)
0
Может это?
http://renpyfordummies.blogspot.ru/2015/02/blog-post.html
avatar
#21 Leshiy133
8334
в 13:06 (18/Сен/2015)
0
Оу, попробую) Тут для всей сцены разом, правда (БГ и Спрайт), а я предполагал только для спрайта.
Но, может, так даже удобнее будет, хм) Особенно в плане коридоров =) День или ночь =) Спасибо, надо потестить!
love
avatar
#22 CompanyBananaLove
15332
в 10:54 (22/Ноя/2015)
0
Я наверно слепая wow , но я не могу найти, как поместить 3-их персонажей на сцену. 1 слева 2-й справа 3-й по середине!??! как!???!ъ smile_59
avatar
#23 Alex_Apple
12449
в 12:36 (25/Ноя/2015)
0
Атрибуты -AT-
Открываешь и смотришь
avatar
#45 Craft_Scripts_Game
48583
в 10:38 (30/Дек/2016)
0
...помещён спрайт*...
...словом, символом или* буквой...

Извиняюсь за допущенные ошибки, небольшие проблемы с клавиатурой. :)
avatar
#40 Craft_Scripts_Game
48583
в 10:11 (30/Дек/2016)
0
Вот команды (sprite это не команда, а назначенная переменная в которую помещён спрайты, она может быть заменена любым словом и буквой):

show sprite at right - поместить справа
show sprite at left - поместить слева
show sprite at center - поместить по центру

Или можно по позициям (заместо нулей укажите свою позицию):

show sprite at Position(xalign = 0.0)
или
show sprite at Position(xpos = 0)
avatar
#24 RedCupcake
17525
в 17:16 (22/Дек/2015)
0
А можно в Ренпи менять размер спрайта?
avatar
#26 Alex_Apple
12449
в 05:53 (08/Фев/2016)
0
Zoom не подходит?
avatar
#25 Simfo
23381
в 16:32 (23/Янв/2016)
0
Подскажите, я правильно понимаю, что в renpy при объявлении изображений обязательно должны совпадать имя файла и текст в скрипте?
Например так:
image bg crab = "images/crab.jpg"
scene crab
В таком варианте все работает.

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

Если переименовать файл samui_34.jpg в beach.jpg и соответственно изменить скрипт, то все ок.
Не нашел в документации явного указания на это.
Заранее спасибо.
avatar
#27 Alex_Apple
12449
в 06:10 (08/Фев/2016)
1
Нет не обязательно, но оба варианта не будут работать. Вы создали изображение bg crab, вот и вызывайте bg crab, а не просто crab.
avatar
#28 Annike
21310
в 09:52 (27/Фев/2016)
0
Я возможно совсем невнимательный и непонятливый...Но в уроках по было сказано, что "Фоновые изображения должны быть того же размера, что и выбранное для игры разрешение. По умолчанию — 800х600 пикселей" . Отсюда вытекает вопрос, можно ли менять разрешение ? Потому что я рисую в SAI и если выбирать в размерах такой формат, могу качественно прорисовать, в основном лишь фоны, персонажей никак, в силу того, что детально прорисовывать лица невозможно, причиной чему является пикселизация, которая происходит при приближении. Надеюсь на ответ, заранее благодарю. smile_64 smile_64 smile_57 smile_56 smile_32 smile_76
avatar
#29 Bruzer
16173
в 17:30 (29/Май/2016)
0
Открываете Option.rpy и там указано расширение.
По умолчанию находится на 20-21 строке кода.
avatar
#44 Craft_Scripts_Game
48583
в 10:34 (30/Дек/2016)
0
Открываешь скрипт options.rpy, потом ищешь вот эти две строчки:
config.screen_width = 800
config.screen_height = 600
И меняешь разрешение экрана, к примеру:
config.screen_width = 1280
config.screen_height = 800
avatar
#31 nastia_manko
12294
в 19:25 (05/Июл/2016)
0
ВСЕ НАПИСАЛА ВЕРНО:
image bg2 = "2.jpg"
ФАЙЛ ВЕСИТ МЕНЬШЕ 1.00 МБ(75.2 КБ)
НО СУК. ОН НЕ РАБОТАЕТ
перепробовала ВСЕ!

angry angry angry
avatar
#32 nastia_manko
12294
в 19:47 (05/Июл/2016)
0
УПС Я ОШИБЛАСЬ
image bg2 = "2.jpg"
scene bg 2
kek joke joke joke
avatar
#33 Darling
35377
в 18:01 (08/Июл/2016)
0
Добрый день! А какое разрешение для игры самое оптимальное? Если 1920х1080 - это будет нормально?
avatar
#34 ShaylinCat
38761
в 04:44 (22/Авг/2016)
1
Сложно сказать...
Многие любят привычный маленький экран 800x600, к тому же под него проще рисовать. Другие любят разрешение повыше и вообще пошире.
Я предпочитаю 1280x720 - такое разрешение, на мой взгляд, оптимальное. Оно и большое, и у всех в экраны поместится, и не слишком надоест любителям маленьких экранов.
В принципе, разрешение можно сделать какое угодно, но помните, что мало у кого есть такой огромный экран, разрешением 1920x1080.
Но, конечно, это ваш выбор.
avatar
#35 merlad
47286
в 11:06 (19/Ноя/2016)
0
помогите не смог найти, как вывести информацию из переменной в картинку.
у меня мини игра где есть счет побед,проигрышей и ничья, но я не знаю как эту информацию вывести на экран игры например в правый угол.
avatar
#36 Slenderman
23387
в 12:04 (04/Дек/2016)
0
У меня тоже есть вопрос. У меня есть спрайты персонажей, а лица от них отдельно. Как их соединять воедино?
avatar
#41 Craft_Scripts_Game
48583
в 10:17 (30/Дек/2016)
0
Paint.net в помощь.
avatar
#47 Craft_Scripts_Game
48583
в 11:34 (30/Дек/2016)
0
Или можно через код (где указано (x,x) указывайте исходный размер спрайта):
image sprite = LiveComposite(
(x, x),
(0, 0), "sprite_1.png",
(0, 0), "sprite_2.png",
(0, 0), "sprite_3.png"
)
avatar
#37 QwiziRAM
22148
в 08:20 (05/Дек/2016)
0
А что требуется, чтобы поместить поверх обычной картинки, например, анимацию падения лепестков сакуры. Надо чтобы фон анимации был прозрачен и просто класть поверх или есть что-то еще?
avatar
#42 Craft_Scripts_Game
48583
в 10:19 (30/Дек/2016)
0
Функций с анимациями есть множество, главное выбрать такую которая тебе по душе.
avatar
#46 Craft_Scripts_Game
48583
в 11:21 (30/Дек/2016)
0
А так того что ты сказал будет достаточно.
avatar
#38 DmitryBL
48096
в 16:47 (19/Дек/2016)
0
Люди, помогите пожалуйста. Как написать screen say в моде? (да, я мододел).
avatar
#43 Craft_Scripts_Game
48583
в 10:22 (30/Дек/2016)
0
Зачем тебе диалоговое окно если ты делаешь мод? Если ты делаешь мод (к примеру для Бесконечного лета), то экран say тебе не нужен. Там в самой новелле уже всё сделано. :)
avatar
#48 Regret
30436
в 16:24 (17/Янв/2017)
0
Господа, реально ли сделать для игры несколько разрешений?
avatar
#49 Ётрушка
48945
в 18:39 (27/Янв/2017)
0
Люди, я ищу-ищу, никак не могу найти. Новеллу делаю от первого лица - нужно чтобы картинка главного героя была поверх текстового блока. Я вообще не понимаю, как это сделать.
avatar
#50 Doodli
51587
в 19:13 (30/Янв/2017)
0
Нужна помощь???
У меня есть определенная картинка и она больше экрана игры в высоту,как сделать так чтобы при её выведении на экран камера начинала двигаться вверх до конца,а потом вниз?
avatar
#52 Мавлария
51824
в 22:40 (26/Фев/2017)
0
я в character добавляю такую штуку show_side_image=Image("Images/en.png", xalign=0.0, yalign=1.0). Соответственно, выходит, что на каждую эмоцию свой character. Целиком оно выглядит так: $ en = Character(u'Имя гг', window_left_padding=270, show_side_image=Image("Images/en.png", xalign=0.0, yalign=1.0), color="#00cc66", what_color="#00ffcc", who_drop_shadow=[ (2, 1) ,(3, 2), (4, 3), (5, 4), (6, 5) ], who_drop_shadow_color="#006666" ). Но не факт, что это правильно. Возможно, есть вариант намного удобнее.
avatar
#53 Мавлария
51824
в 22:41 (26/Фев/2017)
0
кажется, я не туда ответила. Простите.
avatar
#51 Мавлария
51824
в 22:36 (26/Фев/2017)
0
Здравствуйте. Подскажите мне, о наимудрейшие, можно ли как-то задержать картинку? Попытаюсь объяснить : вышла картинка фона, и сразу пошел диалог, но мне нужно, что бы эта картинка задержалась. Надеюсь, вы меня поняли. Спасибо.
avatar
#54 mrWebster
19499
в 22:41 (16/Мар/2017)
0
Все очень просто :)
Пиши следующий код после вызова изображения:
window hide
pause
window auto

Команды с виндоу прячут и показывают текстбокс соответственно. Пауза ждет, пока ты нажмешь кнопку. После команды паузы можно указать время, тогда кнопку жать необходимости нет.
avatar
#55 bboyquartet
68712
в 21:31 (18/Ноя/2017)
1
Как сделать вспышку???
avatar
#56 Silfa
75652
в 05:11 (02/Мар/2018)
0
Здравствуйте, подскажите как плавно увеличить или уменьшить картинку?
avatar
#57 Lol
14494
в 22:12 (16/Май/2018)
0
Задаюсь тем же вопросом, что и BBOYQUARTET
Как сотворить вспышку?
Подскажите, пожалуйста. И извините, если вопрос очень тупой вышел...
avatar
#58 rinkazyto
91800
в 16:38 (17/Мар/2019)
0
Можно попытаться со спрайтами.
Код,конечно, написать не могу(ибо тоже лошик)), но опишу как смогу.
можно создать несколько спрайтов со вспышкой, а затем изобразить их в качестве анимации(поочерёдно вписывать код, но с этим возможны проблемки. Сам не пробовал ибо фонов у меня нет и вообще то мне в новеллах пока не пригождалось)
либо взять один спрайт и с помощью zoom увеличить его в размерах, затем изменить фон.
честно, я не мастер, но такие алгоритмы вполне могут помочь. bad
avatar
#59 roarr
207047
в 20:04 (29/Сен/2019)
0
Ребята, искренне надеюсь, что хоть кто-нибудь поможет, кхм, подскажите, пожалуйста:
Может ли renpy запоминать атрибуты заданные для спрайта конкретного персонажа при использовании оператора transform? Например: в процессе диалога между двумя персонажами, где они стоят в разных частях экрана.
 
Код
define v = Character ('V')
image v1 = (images/v1.png)
image v2 = (images/v2.png)
image v3 = (images/v3.png)
label start:
transform duo_left:
         xalign .25 yalign 1.0
#еще всякие настройки после которых идет jump day_1

label day_1:
  show v1 with dissolve #спрайт появился по дефолту в центре
"блаблабла"
"блаблабла"
hide v1 with dissolve

#какой-то кусок где не нужен спрайт

show v2 at duo_left with dissolve
"блаблабла"
show v3 #спрайт появился поверх предыдущего, в том же местоположении
"блаблабла"
show v1 #допустим тут начинаются проблемы, когда спрайт снова появился в центре, как default
"блаблабла"
hide v1 #пропадает тот, что появился по центру, прежние остались на месте
#если же ввести hide v3 with dissolve, то останется тот спрайт - v2 -, который был под тем, который я бы скрыла


Можно ли осуществить задуманное, если я хоть как-то понятно объяснила возникающую проблему, и как можно ее решить? з:
avatar
#60 Хемуль
87473
в 21:01 (29/Сен/2019)
0
Вы бы лучше в группе по Ренпи это спросили или хотя бы на местном форуме. Куда больше шансов, что вам ответят там, чем здесь.
avatar
#61 Azazeles
225280
в 16:08 (10/Ноя/2019)
0
Ребят, как исправить появление спрайта поверх диалогового окна?  Когда я выводил его через "show image" - всё было нормально, но когда я прописал это же изображение к конкретному персонажу, то оно начало загораживать собой диалог.
avatar
#62 Хемуль
87473
в 16:55 (10/Ноя/2019)
0
Сюда почти никто не заходит. Лучше спросите на форуме или в группе по ренпи.
avatar
#63 Azazeles
225280
в 18:25 (10/Ноя/2019)
0
Пх... Я уже сам разобрался))
avatar
#64 AL1F
779330
в 00:37 (20/Янв/2023)
0
привет! такая проблема: пишу код для нескольких спрайтов ( show sprite1 at left show sprite2 at center show sprite3 at right with dissolve) - выводит только один спрайт. в чем проблема никто не знает?