サイドイメージ link

多くのヴィジュアルノベルはインターフェースの一部に会話しているキャラクターの画像を含みます。 Ren'Py はこの画像をサイドイメージと呼び、台詞の一部としての自動的なサイドイメージの選択と表示をサポートしています。

サイドイメージのサポートは Character() の関連付けされる画像タグ付きでの宣言を前提としています。

define e = Character("Eileen", image="eileen")

関連付けされた画像タグを持つキャラクターが話すとき、 Ren'Py は画像属性のプールを生成します。関連づけられた画像タグは、そのタグに関連づけされた現在の画像属性と共にこのプールに加えられます。

そのタグに加え、少なくとも一つの属性がプールになければいけません。そうでなければサイドイメージは表示されません。

あるタグに関連付けられたサイドイメージを決定するために、 Ren'Py は「 side 」タグやプール内の属性をより多く持つ画像を探します。画像が見つからないか、ひとつ以上の画像が同数の属性を持つなら Null が代わりに表示されます。

例えば以下のスクリプトについて述べます

define e = Character("Eileen", image="eileen")

image eileen happy = "eileen_happy.png"
image eileen concerned = "eileen_concerned.png"

image side eileen happy = "side_eileen_happy.png"
image side eileen = "side_eileen.png"

label start:

    show eileen happy

    e "Let's call this line Point A."

    e concerned "And this one is point B."

ポイント A では画像タグ「 eileen 」に関連付けられたキャラクター e が話しています。画像「 eileen happy 」が表示されているので、属性のプールは「 eileen 」と「 happy 」です。「 side 」タグと、可能な限り多くのそれらの属性を持つ画像を探すと「 side eileen happy 」がマッチし、それが Ren'Py に表示されるサイドイメージになります。

ポイント B では「 eileen concerned 」が表示されています。属性のプールは今「 eileen 」と「 concerned 」です。唯一マッチする画像は「 side eileen 」なので、 Ren'Py はそれを選択します。 画像「 side concerned 」があると、曖昧になるので、 Ren'Py は画像を表示できません。

透明なキャラクター link

サイドイメージのもう一つの使い方は、プレイヤーであるキャラクターに台詞があるときの、そのキャラクター画像の表示です。これには画像タグとキャラクターを関連付けし、表示するサイドイメージを選択するための属性つきで say ステートメントを使用します。

define p = Character("Player", image="player")

image side player happy = "side_player_happy.png"
image side player concerned = "side_player_concerned.png"

label start:

    p happy "This is shown with the 'side player happy' image."

    p "This is also shown with 'side player happy'."

    p concerned "This is shown with 'side player concerned'."

config と store 変数 link

設定変数を使って制御可能なサイドイメージの属性がいくつかあります。

_side_image_tag = None link
define config.side_image_tag = None link

_side_image_tag が None でなければ、 config.side_image_tag より優先されます。

これが与えられると現在話しているキャラクターに関連付けられた画像ではなく、指定された画像タグにサイドイメージは従います。例えば

define e = Character("Eileen", image="eileen")
define config.side_image_tag = "eileen"

サイドイメージに e キャラクターに関連付けられた "eileen" 画像タグを所得させます。

define config.side_image_only_not_showing = False link

True の時、そのタグの画像がスクリーンにすでに表示されていない時だけサイドイメージが表示されます。

_side_image_prefix_tag = None link
define config.side_image_prefix_tag = 'side' link

_side_image_prefix_tag が None でなければ、 config.side_image_prefix_tag より優先されます。

サイドイメージを検索するときに使用される接頭辞です。

define config.side_image_null = Null() link

Null displayable はサイドイメージを表示しないときに使用します。これは他の Null オブジェクトにのみ変更してください。この理由は Null (eg. Null(width=200, height=150) ) のサイドイメージを配置して、ディゾルブが遮られるのを防ぐためです。

define config.side_image_same_transform = None link

None または新しいサイドイメージが以前のサイドイメージと同じ画像タグの時に使用される transform です。

define config.side_image_change_transform = None link

None または新しいサイドイメージが以前のサイドイメージとは別の画像タグの時 (または新しいサイドイメージや以前のサイドイメージがないとき) に使用される transform です。

transform とトランジション link

config.side_image_same_transformconfig.side_image_change_transform transform はサイドイメージが表示される度に 2 つの引数、新旧のサイドイメージ displayable で呼び出されます。これらを使用してサイドイメージを動かしたりトランジション出来ます。

画像に関連付けられたキャラクターが変わるとき、次のコードはサイドイメージをスライドイン、アウトします。

transform change_transform(old, new):
    contains:
        old
        yalign 1.0
        xpos 0.0 xanchor 0.0
        linear 0.2 xanchor 1.0
    contains:
        new
        yalign 1.0
        xpos 0.0 xanchor 1.0
        linear 0.2 xanchor 0.0

define config.side_image_change_transform = change_transform

キャラクターが同じとき ( 例えば表情が変わるとき ) 、次のコードを使用して新旧のサイドイメージをディゾルブします。 Dissolve が正確に動作するためには両方のサイドイメージが同じ大きさでなくてはいけません。

transform same_transform(old, new):
    old
    new with Dissolve(0.2, alpha=True)

define config.side_image_same_transform = same_transform

SideImage() がスケールダウンされると、 Dissolve() で mipmap が有効になります。

transform same_transform(old, new):
    old
    new with Dissolve(0.2, alpha=True, mipmap=True)

define config.side_image_same_transform = same_transform

Functions link

renpy.get_side_image(prefix_tag, image_tag=None, not_showing=None, layer=None) link

サイドイメージとして表示する画像を見つけようと試みます。

画像属性のセットを決定するところからはじめます。 image_tag が指定されていればそのタグから画像属性を所得します。そうでなければ現在表示しているキャラクターに指定された image プロパティーからそれらを所得します。利用できる属性が無ければ、 None を返します。

次に prefix_tag タグと次の属性をもつ画像を探します。

  • 画像タグ (image_tag または現在表示されているキャラクターに指定されたイメージ プロパティー)

  • 属性

そのような画像が存在すれば、それが返されます。

not_showing

not_showing が True なら、属性を所得できるそのタグの画像が画面にないときのみサイドイメージを返します。 False なら、常に画像を返します。 None なら値は config.side_image_only_not_showing から所得されます。

layer

指定されれば、画像タグと属性を探すレイヤーです。 None ならばそのタグのデフォルトレイヤーを使用します。

renpy.set_tag_attributes(name, layer=None) link

ある画像タグが表示されていないときに、その画像タグに関連づけられる属性を設定します。主な用途は、サイドイメージで使用する属性の直接設定でしょう。

$ renpy.set_tag_attributes("lucy mad")
$ renpy.say(l, "I'm rather cross.")

l mad "I'm rather cross."

に等しいです。