トランジション link

トランジションは with ステートメント やその他のシーンで使え、シーンの変化(または Displayable を変化させるなにか)に効果を適用します。Ren'Py には定義済みのトランジションがあり、with ステートメントに直接指定できます。例

show bg washington
with dissolve

定義済みのトランジション link

dissolve link

0.5 秒かけて元の画面から新しい画面にディゾルブします。 Dissolve() トランジションクラスのインスタンスです。

fade link

0.5 秒かけてフェードで暗転し、さらに 0.5 秒かけて新しい画面にフェードします。 Fade() トランジションクラスのインスタンスです。

pixellate link

0.5 秒かけて元の画面をピクセレートアウトし、さらに 0.5 秒かけて新しい画面をピクセレートインします。Pixellate() トランジションクラスのインスタンスです。

move link

0.5 秒かけて画像を新しい場所に移動します。 MoveTransition() トランジションクラスのインスタンスです(*訳注 タグが同じ画像の移動に使用します)。

Move トランジションや ease のような類似のトランジションは、 with ステートメント を使用して、1つのレイヤーまたはすべてのレイヤーに一度にのみ適用できます。このトランジションは ATLComposeTransition() などの異なるトランジションの適用方法をするコンテキストでは動作しません。

moveinright link

Also: moveinleft, moveintop, moveinbottom

0.5 秒かけて画像を画面の対応する方向から進入させます(*訳注 タグが同じ画像がすでにあるとトランジションしません)。

moveoutright link

Also: moveoutleft, moveouttop, moveoutbottom

0.5 秒かけて画像を画面の対応する方向へ退出させます。

ease link

Also: easeinright, easeinleft, easeintop, easeinbottom, easeoutright, easeoutleft, easeouttop, easeoutbottom

move- 類と同じですが、トランジションのはじめと終わりがコサインベースで遅くなります。

zoomin link

0.5 秒かけて画像をズームインで進入させます。

zoomout link

0.5 秒かけて画像をズームアウトで退出させます。

zoominout link

0.5 秒かけて画像のズームアウトによる退出と別の画像のズームインによる進入を同時に行います。

vpunch link

呼び出されたとき、画面を 4 分の 1 秒間垂直に揺らすトランジションです。このトランジションと hpunch を模倣してカスタマイズするには ATL トランジション の使用がベストです。

hpunch link

呼び出されたとき、画面を 4 分の 1 秒間水平に揺らすトランジションです。

blinds link

画面に1秒間続く垂直ブラインド効果を与えるトランジションです。 ImageDissolve() トランジションクラスのインスタンスです。

squares link

画面に1秒間続くスクエア効果を与えるトランジションです。

wipeleft link

Also: wiperight, wipeup, wipedown

画面を指定の方向へワイプして更新します。 CropMove() トランジションクラスのインスタンスです。

slideleft link

Also: slideright, slideup, slidedown

新しい画面を指定の方向からスライドインします。 CropMove() トランジションクラスのインスタンスです。

slideawayleft link

Also: slideawayright, slideawayup, slideawaydown

古い画面を指定の方向へスライドアウトします。 CropMove() トランジションクラスのインスタンスです。

pushright link

Also: pushleft, pushup, pushdown

指定の方向に新しい画面で以前の画面を押し出します。 PushMove() トランジションクラスのインスタンスです。

irisin link

Also: irisout

新しい画面の表示や元の画面の非表示に矩形の絞りを使います。 CropMove() トランジションクラスのインスタンスです。

トランジションクラス link

トランジションクラスは、新しいトランジションを作成するために呼び出される関数です。これらの関数にパラメーターを渡して全てのトランジション群を作成できます。その単語から連想されるものとは異なり、それらは通常の python の意味でのクラスではなくそのようにあつかうべきではありません。

トランジションクラスの呼び出しは、with ステートメントの一部としてなされます。例

# A very long dissolve.
with Dissolve(10.0)

同じトランジションクラスを何度も呼び出さなくて済むように、 define ステートメント を使って変数にトランジションを代入できます

define dissolve1 = Dissolve(1.0)

label start:
    show bg washington
    with dissolve1

time_warp 引数は多くのトランジションクラスで受け取られ、 _warper モジュールにある組み込みのワーパーを指定できます。 warpers を参照してください。

AlphaDissolve(control, delay=0.0, *, reverse=False, mipmap=None) link

制御用の displayable (たいていはATL transform をならべたもの) を使ってあるスクリーンから別のスクリーンへトランジションするトランジションを返します。 transform は評価され、 transform が不透明な領域は新しい 画面が使われ、 transform が透明な領域は元の画面が使われます。

control

制御用の displayable です。

delay

トランジションが終了までにかける時間です。

reverse

True なら、アルファチャンネルが反転されます。不透明な領域は元の画像が使われ、透明な領域は新しい画像が使われます。

mipmap

ディゾルブが元のサイズの半分未満に縮小されると、これは True に設定されます。これにより mipmap が生成され、ディゾルブはより多くの GPU リソースを消費するようになりますが歪みは減少します。詳細は mipmap を参照ください。

ComposeTransition(trans, before, after) link

3 つ以内のトランジションから構成される新しいトランジションを返します。 beforeafter トランジションは、None でなければ、元のシーンと新しいシーンにそれぞれ適用されます。更新されたこれらの元のシーンと新しいシーンが trans トランジションに提供されます。

# Move the images in and out while dissolving. (This is a fairly expensive transition.)
define moveinoutdissolve = ComposeTransition(dissolve, before=moveoutleft, after=moveinright)
CropMove(time, mode='slideright', startcrop=(0.0, 0.0, 0.0, 1.0), startpos=(0.0, 0.0), endcrop=(0.0, 0.0, 1.0, 1.0), endpos=(0.0, 0.0), topnew=True) link

シーンを切り抜いてスクリーンに配置するトランジションを返します。これは、シーンの矩形のスライスに関わる様々なエフェクトを実装するのに使えます。

time

トランジションにかける時間です。

mode

トランジションのモードの名前です。モードには三種類あります。ワイプ、スライド、その他です。カスタムモードを定義するために 「 custom 」 にもできます。

ワイプでは、画像は固定されたままで、トランジションが進むにつれて見える領域が増えていきます。例えば、左から右へのワイプである 「 wiperight 」 では、まず画像の左端がスクリーンの左端に現れ、画像の中央が現れ、最後には画像の右端がスクリーンの右端に現れます。ワイプには、その他 「 wipeleft 」,「 wipedown 」, そして 「 wipeup 」 があります。

スライドでは、画像が動きます。ですから 「slideright」では、画像は右端がスクリーンの左端から現れ出し、トランジションが進むにつれて右に進みます。スライドには、その他 「slideleft」、「slidedown」, そして 「slideup」 があります。

スライドアウェイは、元の画像が新しい画像の上を動きます。スライドアウェイには、「slideawayright」, 「slideawayleft」, 「slideawayup」, そして 「slideawaydown」 があります。

矩形の絞りを開く 「irisin」 と矩形の絞りを閉じる 「irisout」 もサポートしています。

次のパラメーターは、モードが 「custom」 であるときのみ考慮されます。ポジションはスクリーンのサイズに対する割合で、クロップは画像のサイズに対する割合です。ですから、(0.25, 0.0, 0.5, 1.0) のクロップは画像の中半分を切り抜きます。

startcrop

手前の画像から最初に切り抜かれる矩形です。x, y, width, そして height からなる 4 要素のタプルです。

startpos

手前の画像が最初に描画されるスクリーン上の場所です。x, y からなる 2 要素のタプルです。

endcrop

手前の画像から最後に切り抜かれる矩形です。x, y, width, そして height からなる 4 要素のタプルです。

endpos

手前の画像が最後に描画されるスクリーン上の場所です。x, y からなる 2 要素のタプルです。

topnew

True なら、切り取られてたり動いたりするシーン (1番手前にシーンです) は新しいシーンです。 False なら、元のシーンです。

define wiperight = CropMove(1.0, "wiperight")
define wipeleft = CropMove(1.0, "wipeleft")
define wipeup = CropMove(1.0, "wipeup")
define wipedown = CropMove(1.0, "wipedown")

define slideright = CropMove(1.0, "slideright")
define slideleft = CropMove(1.0, "slideleft")
define slideup = CropMove(1.0, "slideup")
define slidedown = CropMove(1.0, "slidedown")

define slideawayright = CropMove(1.0, "slideawayright")
define slideawayleft = CropMove(1.0, "slideawayleft")
define slideawayup = CropMove(1.0, "slideawayup")
define slideawaydown = CropMove(1.0, "slideawaydown")

define irisout = CropMove(1.0, "irisout")
define irisin = CropMove(1.0, "irisin")
Dissolve(time, *, time_warp=None, mipmap=None) link

元のシーンから新しいシーンにディゾルブするトランジションを返します。

time

ディゾルブにかける時間です。

time_warp

タイムラインを調節する関数 です。 None または、0.0 から 1.0 の間の小数の時間を引数に受け取り、同じ範囲の数を返す関数を指定します。

mipmap

ディゾルブが元のサイズの半分未満に縮小されると、これは True に設定されます。これにより mipmap が生成され、ディゾルブはより多くの GPU リソースを消費するようになりますが歪みは減少します。詳細は mipmap を参照ください。

Fade(out_time, hold_time, in_time, *, color='#000') link

out_time 秒かけて color で満たされたスクリーンにフェードし、そのスクリーンを hold_time 秒保ち、それから in_time 秒かけて新しいスクリーンにフェードするトランジションを返します。

# Fade to black and back.
define fade = Fade(0.5, 0.0, 0.5)

# Hold at black for a bit.
define fadehold = Fade(0.5, 1.0, 0.5)

# Camera flash - quickly fades to white, then back to the scene.
define flash = Fade(0.1, 0.0, 0.5, color="#fff")
ImageDissolve(image, time, ramplen=8, *, reverse=False, time_warp=None, mipmap=None) link

ディゾルブの過程を制御する画像を使い、元のシーンから新しいシーンにディゾルブするトランジションを返します。この画像の白いビクセルに対応する部分が最初にディゾルブし、黒いピクセルに対応する部分が最後にディゾルブします。

image

制御画像です。これはどのような Displayable でもよいですが、ディゾルブされるシーンのサイズであるべきです。 reverse=True なら、完全に不透明でもあるべきです。

time

ディゾルブにかける時間です。

ramplen

使用する ramp の長さです。これは 2 の整数乗でなければなりません。これがデフォルト値の 8 であるとき、白いピクセルが完全にディゾルブすると、一段階ごとに 8 シェード暗いピクセルのディゾルブインが進みます。

reverse

True なら、黒いピクセルの方が白いビクセルより先にディゾルブインします。

time_warp

タイムラインを調節する関数 です。 None または、0.0 から 1.0 の間の小数の時間を引数に受け取り、同じ範囲の数を返す関数を指定します。

mipmap

ディゾルブが元のサイズの半分未満に縮小されると、これは True に設定されます。これにより mipmap が生成され、ディゾルブはより多くの GPU リソースを消費するようになりますが歪みは減少します。詳細は mipmap を参照ください。

define circirisout = ImageDissolve("circiris.png", 1.0, time_warp=_warper.easeout)
define circirisin = ImageDissolve("circiris.png", 1.0, reverse=True, time_warp=_warper.easein)
define circiristbigramp = ImageDissolve("circiris.png", 1.0, ramplen=256)
MoveTransition(delay, *, enter=None, leave=None, old=False, layers=['master'], time_warp=_warper.linear, enter_time_warp=_warper.linear, leave_time_warp=_warper.linear) link

これらのトランジションでは、古いシーンと新しいシーンの間で位置が変化する画像が補間されて、動きを瞬間的ではなくスムーズなものにします。

タグを持つのはレイヤーのみなので、MoveTransitions は with ステートメント を使って一つのレイヤーまたはすべてのレイヤーに一度にしか適用できません。 ATLComposeTransition() のように、異なる方法でトランジションを適用するコンテキストでは動作しません。

delay

補間が終わるまでの時間です。

old

True ならタグの画像がトランジション中に変更されたとき、新しい画像よりも古い画像が優先して使われます。そうでない場合は、新しい画像が使われます。

layers

トランジションが適用されるレイヤーのリストです。

次の 2 つのパラメータは transform を取りますが、これは時間の経過とともにアニメーションはされません。

enter

None でなければ、そのシーンに新しく挿入される画像も移動されます。 transform はその画像を開始位置に置くために適用されます。

leave

None でなければ、そのシーンから消される画像も移動されます。 transform はその画像を終了位置に置くために適用されます。

次の3つのパラメーターが time warp 関数 を受け取ります。これは 0.0 から 1.0 までの数字を受け取り、同じ範囲の数字を返すべきです。

time_warp

以前のシーンから新しいシーン間の移動に適用されるタイムワープ関数です。

enter_time_warp

新しく挿入される画像に適用されるタイムワープ関数です。

leave_time_warp

消える画像に適用されるタイムワープ関数です。

define longer_easein = MoveTransition(3.0, enter=offscreenright, enter_time_warp=_warper.easein)

次のコードでは、"a" はシーンを離れ (leaveleave_time_warp を使用)、"b" は位置を変更し (time_warp を使用)、"c" は (enterenter_time_warp を使用して) 挿入されます。前後で同じタグが適用されるため、「d」は入退出ではなく、位置の変化として考慮されます。

define some_move_trans = MoveTransition(...)

label start:
    show a
    show b at left
    show ugly_eileen as d at right
    e "This is a dialogue !"

    hide a
    show b at right
    show c
    show pretty_eileen as d at left
    with some_move_trans

"d" の位置が変わる間、 ugly eileen と pretty eileen のどちらが表示されるかは old の値しだいです: old が False であるのがデフォルトの場合で、 ugly_eileen は即座に pretty_eileen に変わり、次に移動します。 old が True の場合、 ugly_eileen は移動してから即座に pretty_eileen に変わります。

MultipleTransition(args) link

次々に複数のトランジションを実行できるトランジションを返します。

args

奇数個のアイテムが格納された リスト です。1番目、3番目、その他の奇数番目のアイテムにはシーンを、偶数番目のアイテムにはトランジションを指定します。シーンとして指定できるものは次の1つです。 :

  • displayable

  • False, トランジション前のシーンを表す

  • True, トランジション後のシーンを表す

ほぼ必ず最初の引数は False で最後の引数は True となります。

これはリストを取る単一のパラメーターであり、 *args ではないことに注意してください。

args 内のトランジションが順に適用されます。各トランジションは、その前に置かれたスクリーンから後に置かれたスクリーンにトランジションします。たとえば

define logodissolve = MultipleTransition([
    False, Dissolve(0.5),
    "logo.jpg", Pause(1.0),
    "logo.jpg", dissolve,
    True])

この例は、logo.jpg にディゾルブし、1 秒待ち、それから新しいシーンにディゾルブします。

Pause(delay) link

新しいスクリーンを delay 秒間表示するだけのトランジションを返します。MultipleTransition の一部にするのに便利です。

Pixellate(time, steps) link

元のスクリーンをピクセレートアウトし、それから新しいスクリーンをピクセレートインするトランジションを返します。

time

トランジションにかける合計時間の秒数です。

steps

それぞれの方向に行われる段階の数です。各段階ごとに、一つ前の段階の 2 倍のピクセルができます。よって、ピクセレートの 5 段階目では 32x32 のピクセルができます。

PushMove(time, mode='pushright') link

新しいシーンで元のシーンを "plush" するトランジションを返します。

time

トランジションにかける時間です。

mode

これらには 4 つのモード "pushright", "pushleft", "pushup", "pushdown" があり、指定された方向に以前のスクリーン押し出します。

define pushright = PushMove(1.0, "pushright")
define pushleft = PushMove(1.0, "pushleft")
define pushup = PushMove(1.0, "pushup")
define pushdown = PushMove(1.0, "pushdown")
Swing(delay=1.0, vertical=False, reverse=False, background='#000', flatten=True) link

以前のシーンを画面端の軸中心に90度回転してフェードアウトし、さらにもう90度回転して新しいシーンをフェードインします。

delay

トランジションにかける時間です。

vertical

True なら、シーンは x 軸中心に回転してピクセルは縦に動き、False なら、 y 軸中心に回転してピクセルは水平に動きます。

reverse

True なら回転は逆方向になります。

background

シーンが回転している間背景となる displayable です。

flatten

True なら、回転前にシーンは画面のサイズの画像に変換されます。画面に満たない画像が望ましくない作用をするならこれを使用してください。

トランジション族 link

トランジション族は、大量の関連するトランジション族を定義する関数群です。

define.move_transitions(prefix, delay, time_warp=None, in_time_warp=None, out_time_warp=None, old=False, layers=['master'], **kwargs) link

moveease トランジションのような、 move トランジション族 を定義します。指定の prefix に対して、次のトランジションを定義します :

  • prefix delay 秒かけて画像を新しい位置に動かすトランジションです。

  • prefixinleft, prefixinright, prefixintop, prefixinbottom - delay 時間かけて画像を新しい位置に動かすトランジションです。新しく表示される画像は適切な側から現れます。

  • prefixoutleft, prefixoutright, prefixouttop, prefixoutbottom - delay 時間かけて画像を新しい位置に動かすトランジションです。新しく隠蔽される画像は適切な側へ消えます。

他のパラメーターは MoveTransition が受け取るものと同様です。 :

time_warp, in_time_warp, out_time_warp

タイムワープ関数 です。これらには移動が完了するまでの時間に対する割合を表す 0.0 から 1.0 の小数を与えられ、線形移動が完了するまでの距離に対する割合を表す同じ範囲の小数値を返します。

これは、一定の速度では動かない画像を動かす関数を定義するのに使えます。

これら3つの引数は、スクリーンにある画像、新しく現れる画像、新しく消える画像に、それぞれ使われます。

old

True ならタグの画像がトランジション中に変更されたとき、新しい画像よりも古い画像が優先して使われます。そうでない場合は、新しい画像が使われます。

layers

トランジションが適用されるレイヤーです。

# This defines all of the pre-defined transitions beginning
# with "move".
init python:
    define.move_transitions("move", 0.5)

辞書トランジション link

Ren'Py がトランジションを受け取る様々な場所で、レイヤー名をこのトランジションに対応付ける辞書を代わりに指定できます。この場合、 Ren'Py は対応するレイヤーにそれぞれのトランジションを適用します。

辞書が使用されると、通常行われるトランジション時のポーズは起きません。代わりに辞書を受け取ったステートメントは即座に制御を返し、次のインタラクションの開始時時に実行するようスケジュールされます。

これを使用して,台詞をスクリーンに表示したまま、マスターレイヤーにトランジションを実行できます。例えば

define dis = { "master" : Dissolve(1.0) }

label start:
    show eileen happy
    with dis

    e "Hello, world."

ディゾルブ実行中テキストが表示され続けます。

辞書トランジションはすべてのトランジションを指定できる場所で使用できるわけではなく、レイヤーへのトランジションが可能なシーンでのみ使用できます。 with ステートメントscene, show, hide ステートメントの with 節でも使用できます。 renpy.with_statement()renpy.transition() の関数や Show() , Hide() アクション、トランジションを受ける様々な設定変数でも使用できます。辞書トランジションは ATL や ComposeTransition()MultipleTransition() のようなレイヤーに対して動作しないものの内部では動作しないでしょう。

これは window auto で起きるトランジションのような、自身でトランジションを起こす with ステートメントに良くない作用をするかもしれません。それには異なるレイヤーには2つ目の辞書トランジションを適用して対処できます。例えば、もし台詞ウィンドウの表示非表示時で唐突な点滅を目にするなら options.rpy を次のように変更することを考えてください。

define config.window_show_transition = { "screens" : Dissolve(.25) }
define config.window_hide_transition = { "screens" : Dissolve(.25) }

これは台詞ウィンドウがスクリーンレイヤーにあるために動作します。

ATL トランジション link

関連項目: ATL - アニメーションと transform 言語

ATL transform を使用してトランジションを定義できます。これらのトランジションは、 old_widget 引数と new_widget 引数を受け取る必要があり、それぞれトランジション元とトランジション先の画面を表す displayable を受け取ります。

ATL トランジションは、自身の delay プロパティーをトランジションの継続時間 (秒数) に設定する必要があります。古い displayable がイベントを受け取らないようにするために、 events プロパティーを使用することがあります。

transform spin(duration=1.0, *, new_widget=None, old_widget=None):

    # Set how long this transform will take to complete.
    delay duration

    # Center it.
    xcenter .5
    ycenter .5

    # Spin the old displayable.
    old_widget
    events False
    rotate 0.
    easeout (duration / 2) rotate 360.0

    # Spin the new displayable.
    new_widget
    events True
    easein (duration / 2) rotate 720.0

Python トランジション link

Python の callable はトランジションとして使用できます。そのためには、以下で説明する 2 つのキーワード引数を取り、トランジション効果を実行する displayable を返す必要があります (通常はそれを別のトランジションに委任します)。キーワード引数は、古い画面を表す old_widget と新しい画面を表す new_widget の 2 つです。

呼び出し可能オブジェクトによって返される displayable は、トランジションを実行する秒数に設定された delay 属性を持つ必要があります。

init python:
    def dissolve_or_pixellate(old_widget=None, new_widget=None):
        if persistent.want_pixellate:
            return pixellate(old_widget=old_widget, new_widget=new_widget)
        else:
            return dissolve(old_widget=old_widget, new_widget=new_widget)

したがって、あらゆる種類のトランジションはこれら 2 つのキーワード引数を渡して呼び出されると、渡された 2 つの displayable 間のトランジションをアニメーション化する displayable を返します。

Scene, Show, Hide 後の自動トランジション link

Ren'Py は一連の scene, show, hide ステートメントの後に自動的にトランジションを表示できます。このトランジションは使用するトランジションを _scene_show_hide_transition 変数に設定して有効化できます。

このトランジションは withwindow ステートメントのような :ref`dialogue-window-management` により発生するトランジションが続かない一つ以上の scene, show, hide ステートメント後に起こります。メニューコンテキストでは無効になります。

define _scene_show_hide_transition = Dissolve(0.25)

label start:
    scene bg washington
    show eileen happy

    "The transition won't show here, because the dialogue window transitioned in."

    show lucy mad at right

    "The transition will happen here."

    hide lucy mad
    show eileen vhappy

    "And it will happen here, as well."