レイヤー画像で目パチ口パチ、パクパク音

下記ページにてレイヤー画像の解説を行った。このページではそれらを踏まえて、レイヤー画像で目パチ、口パチ、パクパク音(喋るときの効果音)を使用する方法を述べる

Ren’Pyのレイヤー画像解説または複数パーツにわたる画像の宣言とRen’Pyの画像定義あれこれ

目パチの方法

レイヤー画像定義より先に目パチアニメーションする画像”花子_目_目パチ”を定義します。次にその画像をレイヤーに組み込むよう、手動なり自動なりでレイヤー画像を定義します。例えば”花子_目_開”, “花子_目_開”という画像が定義されている状態で下記コードのようにすると

init 1:
    image 花子_目_目パチ:
        "花子_目_開"
        #30%で0.3秒間隔で瞬き, 70%で1秒ごとに0.5秒目を閉じる
        choice(.7):
            1
            "花子_目_閉"
            0.5
        choice(.3):
            1
            "花子_目_閉"
            0.3
            "花子_目_開"
            0.3
            "花子_目_閉"
            0.3
        repeat

init 2:
    layeredimage 花子:
        always:
            "花子_base"
        group 目 auto
        group 髪 auto
        group 口 auto
        always:
            "花子_髪"

目の画像としては”花子_目_開”, “花子_目_開”の他に、”花子_目_目パチ”も追加で含まれます。目パチ画像として表示したければ “show 花子 目パチ”で表示すれば目パチしている状態で画像が表示されます。

口パク、パクパク音

喋っているかどうかをATLからは所得できないため、キャラクターコールバックから状態所得と効果音再生をする必要があります。方法は以下で紹介されています。

https://t.co/wZ5WN0qNol

上記コードではキャラクターが話しているときと、そうでないときで別の画像を返すDynamicDisplayable WhileSpeaking を定義しています(while_speakingの定義でタブの深さが間違えている点には注意)。WhileSpeakingの使い方が書いてないため捕捉すると、目パチと同じように以下のように定義すればレイヤー画像に組み込めます。

image 花子_口_喋り中:
    花子_口_閉
    1.0
    花子_口_開
    1.0
    repeat

image 花子_口_口パク = WhileSpeaking("花子", "花子_口_喋り中", "花子_口_閉")
Pocket