🚁

Renpyのsmooth transformが半透明のまま止まってしまう

2023/05/23に公開

ノベルゲームエンジンRenpyでは、transformを定義して立ち絵に変化を加えることができます。
以下のsmooth transformは、立ち絵を滑らかに表示するtransformです。

# show および hide 時に実行される transform を定義する
transform smooth:
    on show:
        alpha 0.0
        linear 0.5 alpha 1.0
	#0.5秒で立ち絵の透明度を、0.0から1.0に変化させる
    on hide:
        alpha 1.0
        linear 0.5 alpha 0.0
 
label start:
    scene bg washington
    "「ここがワシントンD.C.か……」"
 
    # eileen vhappy を smooth トランスフォームを使って表示する
    show eileen vhappy at center, smooth
 
    e "「こんにちは!」"
 
    # 立ち絵をフェードつきで切り替えるために、show ステートメントを使用する
    show eileen happy at center, smooth
    e "「さようなら!」"
 
    # イメージにはすでにトランスフォームが設定されているので、hide 時に指定する必要はない
    hide eileen
 
    "……"
    "「え、何?」"

引用元(原文にコメントを付けた)
http://www.windproject.sakura.ne.jp/renpy/wiki/index.php?title=立ち絵をなめらかに表示する

バグの事象

スキップすると、立ち絵が完全に表示されず、半透明のままになってしまう事象が発生しました。

原因

立ち絵の表情を変えると、on showのtransformがキャンセルされてしまうことが分かりました。

# show および hide 時に実行される transform を定義する
transform smooth:
    on show:
        alpha 0.0
        linear 0.5 alpha 1.0
    on hide:
        alpha 1.0
        linear 0.5 alpha 0.0
    on replace:
        linear 0.5 alpha 1.0

表情を置き換えた際に実行される、on replaceにも記述することで解決しました。

Discussion