Как сделать куклу в Ren'Py с атрибутами, одеждой, анимацией и морганием (How To Doll in Renpy, with attributes, clothes, animation and blinking)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску
Doll1.png
Doll2.png
Dollpics.png


Недавно я потратил немало времени, пытаясь выяснить "how2doll" в Ren'Py.

"Кукла" означает, что у вас есть персонаж, и вы можете одеть его или раздеть, сменить одежду, чередовать выражения лица и жесты рук, используя только набор компонентов вместо предоставления отдельного файла для каждой возможной композиции. После того, как я все понял, вопрос о том, как это было сделано, возникал неоднократно, и я решил написать быстрый пример игры, чтобы показать основы для дальнейшего использования. Я также добавил моргание и анимацию, чтобы показать, как эти понятия взаимодействуют друг с другом.

# Как сделать кукол с переменными и атрибутами изображения,
# используя атрибуты изображения ("show eileen happy")
# и переменные ("eileeniswearingclothes")
#
# Ваши лучшие друзья
# LiveComposite (возьмет несколько отображаемых изображений и объедините их в одно)
# ConditionSwitch (оценивает переменные и
# отображает изображение на основе первого, что верно)
# Transform (чтобы увеличить и расположить куклу так, чтобы она подходила под сцену)


image eileenhead:  # Теперь с подмигиванием
    LiveComposite (
      (360,720), # при условии, что ваши куклы имеют формат 360x720
      (0,0), "eileen_head_base.png", # Предполагая, что у вас есть "base head"
      (0,0), "eileen_neutral_face.png" # и вы просто накладываете на него лицо
    )
    pause 4.0 # Это ATL. В течение 4 секунд покажет основу головы ...
    LiveComposite (
      (360,720),
      (0,0), "eileen_head_base.png",
      (0,0), "eileen_neutral_face_blink.png" # затем мигать в течение 0.1 секунды
    )
    pause 0.1
    repeat     # и повторит

image eileenhead happy:
    LiveComposite (
      (360,720),
      (0,0), "eileen_head_base.png",
      (0,0), "eileen_happy_face.png"
    )

image eileenbody:
    LiveComposite (
      (360,720),
      (0,0), "eileen_body_base.png",  #
      (0,0), ConditionSwitch ( # evaluates expressions
          "store.eileeniswearingclothes == True", "eileen_body_clothes.png",
          "True", Null()     # if eileen is not wearing clothes according to the
          )                # global, don't show anything additional.
      )                    # ConditionSwitch requires ONE of the conditions to
                          # always turn out true, so it's a good idea to have
                        # a "True", Null() at the end. Otherwise you get the
                        # most useless error message in all of ren'py

image eileenbody armsflailing: # Now with animation!
    LiveComposite (
        (360,720),
        (0,0), "eileen_body_base_armsflailing.png",  #
        (0,0), ConditionSwitch ( # evaluates expressions
            "store.eileeniswearingclothes == True", "eileen_body_clothes_armsflailing.png",
            "True", Null()     # see above
            ),
        )
    pause 0.4
    LiveComposite (
        (360,720),
        (0,0), "eileen_body_base_armsflailing2.png",  #
        (0,0), ConditionSwitch ( # evaluates expressions
            "store.eileeniswearingclothes == True", "eileen_body_clothes_armsflailing2.png",
            "True", Null()     # see above
            ),
        )
    pause 0.4
    repeat

image eileen: # neutral, boring eileen
    LiveComposite (
        (360,720),
        (0,0), "eileenhead", #neutral expression on face
        (0,0), "eileenbody"
        )


image eileen happy:
    LiveComposite (
        (360,720),
        (0,0), "eileenhead happy",
        (0,0), "eileenbody" # still no arms flailing
        )

image eileen superhappy:
    LiveComposite (
        (360,720),
        (0,0), "eileenhead happy",
        (0,0), "eileenbody armsflailing" # now she flails
        )

image eileen sarcastic:  # neutral face but arms flailing?
    LiveComposite (
        (360,720),
        (0,0), "eileenhead", #neutral expression on face
        (0,0), "eileenbody armsflailing" # now she flails
        )

image bg tokenbackground:
    "tokenbackground.jpg"
    zoom 2.0

transform halfright: # Halfright is zoomed out, making the doll smaller
    xpos 0.7
    xanchor 0.5
    zoom 0.7

transform fullcenter: # приближается
    xpos 0.5
    xanchor 0.5
    zoom 1.0

transform wayclose: # масштабирование полностью
    xpos 0.5
    xanchor 0.5
    zoom 1.5

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

label start:
    scene bg tokenbackground
    $ eileeniswearingclothes = True
    show eileen at halfright

    e "Наверное, сейчас я чувствую себя очень нейтрально."
    e "Понаблюдайте немного, я действительно иногда моргаю."

    show eileen superhappy at fullcenter with move

    e "Хорошо, теперь я взволнована или что-то в этом роде!"

    $ eileeniswearingclothes = False

    e "Давай разденемся YAAAY"

    show eileen sarcastic at wayclose

    e "Ты не выглядишь таким впечатанным, как я надеялась"
  • Сссылка на архив с тестовым проектом: script.rpy

Источник[править | править код]

Статья "How To Doll in Renpy, with attributes, clothes, animation and blinking" на английском языке.


На главную страницу Книга рецептов Энциклопедии Ren'Py Форумы Lemma Soft Вернуться к началу статьи