参考:Change Side Image Expressions [SOLVED] - Lemma Soft Forums
(追記2023/02/23)常時表示の方法が違いました!!!すみません!!
layerdimageでサイドイメージ(メッセージボックスの横の顔イメージ)を
表示する方法備忘録です。画像を普通に表示するときとあまり変わらない?はず!
キャラクターが喋る時だけ表示する
地の文、または他のキャラクターが話している時に非表示にするやり方。
Characterの定義
define S = Character("[persistent.name_keep]", color="#965778",ctc="ctc_blink", ctc_pause="ctc_blink",ctc_position="nestled",what_prefix=" 「",what_suffix="」",image="0") (省略)
いっぱい書いてますが最後のimage="0"が重要です。
0は数値ではなく後述のlayerdimageの名前です(ややこしい)
layerdimageの定義
layeredimage side 0: always "0_base" (省略)
layerdimageの横にsideを付け足します。
これでSideimage()が表示される場所にこの画像が出るようになります。
screens.rpy
screen say(who, what): (省略) add SideImage() xalign -0.08 yalign 0.65
多分デフォルトだとこう書いてあると思うので、変更しなくて大丈夫です。
キャラクターを常時表示する
地の文または他のキャラクターが話している時だろうがずっと表示するやり方。
サイドイメージの優先表示設定をする
options.rpy
define config.side_image_tag = "test"
サイドイメージ — Ren'Py Documentation
話しているキャラではなくここに設定されたtagを持ったCharacterが優先されてsideに表示されます。
Characterの定義
define narrator = Character("", image="test") define t = Character(_('tes'), image="test")
もし心の声的なナレーター表示もサイドイメージを表示したい場合は
narratorを指定し、同じimageのタグを書きます。
layerdimageの定義
layeredimage 1: always "1_base" (省略) image side test = LayeredImageProxy("1")
side付け足しなし。最後の行を同じimageのタグの名前で書き、Layeredimageの名前を指定します。
これ今あまりわかってないで足していますが多分大事なやつです。
SIdeimageの追加
screens.rpy
screen say(who, what): (省略) add SideImage() xalign -0.08 yalign 0.65
sideimageです!!!!!!!
自分だとlayeredimageを直接指定して変数で変更している
余談戦法でやっていたので勘違いしてました。ごめんなさい!!
本編での書き方
script.rpy
narrator a3 b2 c2 d2"てすてす" t a2 b2 c2 d2"てすてす"
Characterの定義で指定したキャラがサイドに表示され、表情が変更できます!
余談
※ ここからは真似しなくていい&読まなくていいやつです
私はどうしても e happy "セリフ"みたいな前半が長くなる書き方(?)が苦手で
eだけで収めたい!!!!!!!!がためにすごい変なやり方しています。
こんなやり方です。
・Characterにimageを紐づけない
・サイドイメージに使うlayerdimageを変数で表情を操作するようにする
layerdimageの定義
layeredimage 0: always "0_base" if emo[0] == "b2" : "0_b_b2" (省略) if emo[1] == "c2" : "0_c_c2" elif emo[1] == "c3" : "0_c_c3" (省略) if emo[2] == "d2" : "0_d_d2" elif emo[2] == "d3" : "0_d_d3" (省略)
実際表情をつけるときの書き方
$ emo = ["b2","c5","d4"] S"わ~~無茶苦茶だ~~"
これをやるとe happyみたいな書き方をしなくていいんですが、
表情にトランジションがききません。真似しないほうがいい。解散!!!!
(前の間違ってた記述のさらし首)
Characterの定義
define S = Character("[persistent.name_keep]", color="#965778",ctc="ctc_blink", ctc_pause="ctc_blink",ctc_position="nestled",what_prefix=" 「",what_suffix="」",image="0") (省略)
前述と変わりません。私自身はややこしいやり方してるので消していますが、
e happy "セリフ"みたいな書き方で進める場合はここと紐づけてていいと思います。
layerdimageの定義
layeredimage 0: always "0_base" (省略)
layerdimageの横にsideを付け足しま……せん!
screens.rpy
screen say(who, what): (省略) add "0" xalign -0.08 yalign 0.65
ずっと表示する予定のlayerdimageの名前を貼り付けます。
これで常時表示されます。変数で囲って必要な場合は消すとかもできそうです!