Форум Anivisual закрыт. Вы не можете создавать новые темы или писать ответы. Форум будет работать в режиме архива.
Пользователи · Поиск по форуму · · · Регистрация

Помощь по Ren'Py (Вопрос\Ответ)

Admin

#1
Сюда пользователи сайта могут писать вопросы о тех или иных функциях движка Ren'Py, а мы попытаемся на них ответить:)

stop_control

#782
Цитата AxelK ()
python:        for i in range(100):
renpy.show ('', what=Image('images/cg/%d.png' % i), tag = 'img%d' % i)
renpy.pause()

Этот код ошибки не вызывает, но и картинки на экран не выводит.

У меня вывод картинки на экран выглядит вот так.

...
show expression img_to_show as count
xanchor 0.5
yanchor 1.0
xpos 0
...

Очень хочется переменную "count" использовать в имени псевдонима.

Хочу отметить что вывод одного изображения - без проблем.
Следующее получает то же имя псевдонима и затирает предыдущее.
Проблема не в выводе, а в псевдониме.
Сообщение отредактировал stop_control - Четверг, 16/Июл/2020, 00:08
«Иди пожалуйся своей мамочке»

AxelK

#783
> Этот код ошибки не вызывает, но и картинки на экран не выводит.
Пути-то, ясно дело, поправить надо. В моём примере картинки лежат в /images/cg/ с именами 0.png, 1.png, ...

> Проблема не в выводе, а в псевдониме
если выводить с указанием tag, ничто не затирается.
в примере выше покажется 100 картинок с разными незатирающимися тегами img0, img1, ...
с помощью тегов их также можно например выборочно убирать с экрана
 renpy.hide ('img1')

если и позицию им менять в зависимости от переменной, то они еще и в разных местах будут
renpy.show( ... , at = [какой_нибудь_transform (i)], ...)


Код
transform test (z):
    xanchor 0.5
    yanchor 1.0
    xpos z * 4
    ypos z * 2

label start:
    python:
        for i in range(10):
            renpy.show ('', at=[test(i)], what=Image('images/%d.png' % i), tag = 'img%d' % i)

stop_control

#784
Спасибо, но я эту запись не понимаю.....
В моем формате меняется картинка и ее параметры увеличение,координаты, направление движения...
Это всего лишь часть кода.
Представьте - летит птица слева направо - картинка в профиль - размер в зависимости от расстояния до экрана.
Потом она повернула на зрителя, картинки меняются до анфаса и размер изменяется в зависимости от расстояния до зрителя.

Меня интересует моя форма записи, без страшной строки "python:"

show expression img_to_show as count

Можно решить проблему в ней?
«Иди пожалуйся своей мамочке»

AxelK

#785
В таком случае мне непонятно, почему картинки не должны сменять друг друга, если это анимация.
Как раз и должен быть один тег, чтоб летела одна птица, а не сто.
Плюс должна быть пауза, не одновременно же все кадры надо увидеть.

> show expression img_to_show as count

label start:
    $ count = 0
    while count < 100:
        $ count += 1
        show expression "кадр_%d"%count as bird
        pause 0.01

кадры должны называться: "кадр_1", "кадр_2" и так далее до "кадр_100"

но
Для анимации лучше бы объявить заранее анимированную картинку со всеми кадрами и показывать ее в нужный момент.

Image bird:
    'frame1'
    pause 0.01
    'frame2'
    pause 0.01
    'frame3'
    pause 0.01
    #...  еще стопятьсот кадров или трансформаций
    # проблема в том, что нельзя задать сто картинок в цикле
    loop

label start:
    show bird
    # дальше можно хоть ждать, хоть показывать диалоги, а птица себе пусть летает.

stop_control

#786
Цитата AxelK ()
Как раз и должен быть один тег, чтоб летела одна птица, а не сто.
Летит стая )
Больше 10 птиц но меньше 100
100 условное максимальное значение. У меня ноут заметно тормозит на 40 движущихся объектах.

Цитата AxelK ()
label start:    $ count = 0
    while count < 100:
        $ count += 1
        show expression "кадр_%d"%count as bird
        pause 0.01
 
Тут логическая ошибка.
Картинки загружаются разные - да.
Но для ренпи каждая картинка имеет имя псевдонима
Выходит вот такая последовательность:

show  bird
show  bird
show  bird

А поскольку имена одинаковые, вывод следующей картинки удаляет предыдущую.
Вопрос остается - как менять имя псевдонима?

Цитата AxelK ()
Для анимации лучше бы объявить заранее анимированную картинку со всеми кадрами и показывать ее в нужный момент.
1 Пробовал через оператор Animation - не понравилось - тормозит.
2. Если просто учитывать фазы направления это 12 картинок, каждая с поворотом через 30 градусов. Если использовать виды сверху и снизу - уже 36.
Если на каждую картинку использовать анимацию из 6 кадров, уже 216 картинок png.
Громоздко выходит.

Скорость движения каждой птицы увы тоже планируется изменяемая во времени.

Движение сейчас упрощенно реализовано через оператор linear.
«Иди пожалуйся своей мамочке»

AxelK

#787
теперь хотя бы задача сформулирована понятно :)

Добавлено (16.07.2020, 10:51)
---------------------------------------------
тогда не вижу способа решить проблему иначе, чем прямыми вызовами соответствующей функции renpy.show



Код
transform bird_pos (x):
    xpos x*100
    ypos 100 +  (x % 2) * 100

label start:

    $ bird_total = 10
    $ frame_count = 5
    $ current_frame = 0
    
    while current_frame < frame_count:
        $ current_frame += 1
        $ current_bird = 0
        while current_bird < bird_total:
            $ current_bird += 1
            $ renpy.show ('',
                at_list=[bird_pos(current_bird)],
                what=Image("f_%d.png" % current_frame),
                tag="bird_%d" % current_bird,
                zorder = current_bird)
        pause 0.03

stop_control

#788
Спасибо всем за ответы.
Последний код выдает ошибку.
Я абсолютно ничего не понимаю.

Буду искать программиста под проект - если решусь начать его делать, либо потрачу следующий год на изучение Ренпи...
Тема закрыта.
«Иди пожалуйся своей мамочке»

СОНЦЕ

#789
Я тоже попробую.

Код
image bird = Solid('#33f',xysize = (20,20))

transform pos(x,y):
    pos (x,y)

label main_menu:
    return

label start:

    python:
        for i in range(100):
            s = 'bird' + str(i)
            renpy.show(s,at_list=[pos(i*10,i*10)],what='bird')
    pause

    return


У меня все работает. Чудесная стая птичек!




Прикрепления: 0530790.jpg (15.3 Kb)
Сообщение отредактировал СОНЦЕ - Четверг, 16/Июл/2020, 10:28

AxelK

#790
Цитата stop_control ()
Последний код выдает ошибку

Разве что на имена картинок. лично запускал. 10 птичек в шахматном порядке. анимируются одновременно (5 кадров)

AxelK

#792
Цитата СОНЦЕ ()
хотелось поймать ПиТома в подворотне и спросить

на дискорд канале можно поймать :-)

СОНЦЕ

#794
Цитата CHMOnika ()
сделать вторую страницу для галереи изображений

Зависит от реализации самой галереи, но, например, так:

1. Добавляем пульт выбора страниц галереи

Код
screen gallery_chooser:
    hbox:
        align (.9,.9)  #расположение пульта. если хотим его в другом месте поиграть с цеферками в скобках
        text 'Выберите Страницу!?'
        textbutton '1' action Show('gallery')
        textbutton '2' action Show('gallery2')
        textbutton '3' action Show('gallery3')
        #итд сколько у Вас должно быть страниц

        

2. Находим screen gallery (или как у Вас называется галерея)
   дописываем в неё строчку в конец
    
Код
use gallery_chooser

3. Берем весь код скрина gallery и копипастим его. Переименовываем копию например на screen gallery2

Всё, вторая страница готова, остается только наполнить её картинками

Пока что не могу это проверить, так что пока только как идея в общих чертах
Поиск: