下記ページにてレイヤー画像の解説を行った。このページではそれらを踏まえて、レイヤー画像で目パチ、口パチ、パクパク音(喋るときの効果音)を使用する方法を述べる
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からは所得できないため、キャラクターコールバックから状態所得と効果音再生をする必要があります。方法は以下で紹介されています。
上記コードではキャラクターが話しているときと、そうでないときで別の画像を返すDynamicDisplayable WhileSpeaking を定義しています(while_speakingの定義でタブの深さが間違えている点には注意)。WhileSpeakingの使い方が書いてないため捕捉すると、目パチと同じように以下のように定義すればレイヤー画像に組み込めます。
image 花子_口_喋り中:
花子_口_閉
1.0
花子_口_開
1.0
repeat
image 花子_口_口パク = WhileSpeaking("花子", "花子_口_喋り中", "花子_口_閉")