立ち絵付きのテキスト表示中に、立ち絵にTweenアニメーションをさせたい

144 views
Skip to first unread message

hn

unread,
Sep 10, 2022, 7:12:49 PM9/10/22
to 宴ユーザーグループ
・宴のバージョン:3.11.6
・Unityのバージョン:2021.3.5f1
・OSバージョン:MacOS
・Unityの習熟度:初心者

いつもお世話になっております。

立ち絵つきのテキスト表示中に、立ち絵をTweenでアニメーションさせ、
テキストが更新されるときに、アニメーションも同時に終了されるようにしたいです。
以下のようにマクロを使用して実装しようとしたのですが、
クリックでテキストが更新されず、テキストが自動で更新されてしまいます。

CleanShot 2022-09-11 at 08.08.45@2x.png

こちら、実装の方法いただくことはできますでしょうか。
また、もしスクリプトなど必要でしたら、ご提供いただくことは可能でしょうか?

お手数ですが、何卒よろしくお願いいたします。

マッドネスラボ

unread,
Sep 10, 2022, 9:40:55 PM9/10/22
to 宴ユーザーグループ
 PageCtrlの「BrPage」は自動改ページになるので、意図したものと違う動きになると思います。

宴のキャラ表示とセリフを一行で書けるようにしているというのは、簡略化して書けるようにするのが目的です。
テキスト行を空欄のままにすると、ただのキャラクターの表示コマンドになります。
なので、演出をするときは、
・キャラ表示
・Tween
・台詞表示
のように、キャラ表示とセリフ表示をわけてください。

マクロにするとこんな感じです。
ss_0447.png
(ちなみに、マクロ内でTextで使用するのが%Arg6になっていましたが、%Textとすると、Text列をマクロ引数にできるので、そちらのほうがほかと書き方を合わせられると思います)


一応、やや変則的ながら
・キャラとテキスト表示(即座に次のコマンド)
・Tween演出
・改ページ入力待ち
とすることも可能です。
ss_0448.png
PageCtrlとNextとすると次のコマンドに強制以降して、InputBrPageとすると改行入力待ちになります。
使用するときはあまりないかもしれませんが、演出を凝って作るときはもしかすると必要になるかもしれないので、補足としてお伝えしておきます。



2022年9月11日日曜日 8:12:49 UTC+9 hn:

hn

unread,
Sep 11, 2022, 7:17:12 PM9/11/22
to 宴ユーザーグループ

申し訳ありません、前のメッセージを個人に返信にしておりました……。
意図したとおりに再生できました!ありがとうございます。

すみません、追加でお聞きしたいのですが、
テキストを更新するまで、ずっとアニメーションを表示し続けるにはどうすれば良いでしょうか?
以下のように設定してみたのですが、テキストが終わってもアニメーションが終わるまで、テキストが更新されません。
CleanShot 2022-09-12 at 08.10.21.png

すみませんが、ご教示いただけると嬉しいです。
よろしくお願いいたします。

2022年9月11日日曜日 10:40:55 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 11, 2022, 9:16:30 PM9/11/22
to 宴ユーザーグループ
WaitTyppeをPageWaitにした場合は、改ページ時にそのエフェクトの終了待ちをします。
なので、エフェクトの終了待ちをしたくない場合はWaitTypeを変えてください。

・WaitTypeを PageWaitSkippable  にする
WaitTypeをPageWaitSkippableにすると、改ページ時にエフェクトがまだ終わってない場合は、そのエフェクトをスキップして終わらせます。

・WaitTypeをNextにする
WaitTypeをNextにすれば、「改ページで演出終了を待たずスキップもせずに、そのまま演出を続行させる」形になります。
ですが、注意が必要です。
宴はページをまたいだ演出を行うと正常にセーブできません。
セーブデータはページ単位で行うのですが、その時に動いているものは途中から正確に再開できないからです。(結果アニメーションがずれたります)
なので、Nextを使ってページをまたいだ演出をするのは、
セーブを使わない会話シーンなどで宴を使用している場合か、もしくはセーブを全ページではなくセーブポイントに絞って行う場合にのみしてください。






2022年9月12日月曜日 8:17:12 UTC+9 hn:

hn

unread,
Sep 12, 2022, 7:33:29 PM9/12/22
to 宴ユーザーグループ
ご回答ありがとうございます!

以下のように、マクロでPageWaitSkippableを使用してみたのですが、改ページ時にエフェクトがスキップされず、
早送りでエフェクトが再生され、エフェクトが終わるまで立ち絵が高速で動き続けてしまいます……。
何度もお聞きしてしまい申し訳ないのですが、改善する方法はありますでしょうか……?

CleanShot 2022-09-13 at 08.29.07.png

2022年9月12日月曜日 10:16:30 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 13, 2022, 12:54:38 AM9/13/22
to 宴ユーザーグループ
すみません。それは宴のバグです。
ループカウントが設定されていたときのスキップ機能が正常に動作していませんでした。
修正しましたので、添付のパッケージファイルを適用してください。
(添付ファイルのダウンロード後に、拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)


ちなみに、ループの回数を多く設定しているのは、無限ループをしたいということでしょうか?
これはドキュメントには明示していませんが、
loop=0 または pingPong=0
とすることで無限ループが設定できます。
ただし、文字通り無限ループなので「エフェクトの終了を待つ」のが前提のPageWaitなどと相性が悪いです。(そこでシナリオが永遠に止まってしまうため)
WaitTypeをSkippable系にしても無限ループはスキップできません。
なので、WaitTypeをNextで使う前提になると思います。
この辺がちょっと危険なので、今のところドキュメントに書かずにいるままです。

実現可能かはお約束できないのですが、
もし、無限ループの要望があれば、どのような動作が望ましいかご意見あればお願いします。
(スキップ時の動作や、ループの停止コマンドの要望など)
特になければ、なにもなしで構いません。


2022年9月13日火曜日 8:33:29 UTC+9 hn:
FixTweenLoopSkip.unitypackage

hn

unread,
Oct 5, 2022, 6:02:09 PM10/5/22
to 宴ユーザーグループ
長らくお返事が遅れ申し訳ありません。
しばらくバタバタしており、Unityに触れませんでした……。

スクリプト修正いただきありがとうございます。
いただいた修正ファイルが動作することを確認いたしました。
Skip時は問題なくアニメーションがスキップされましたが、Autoのときにアニメーションがスキップされず、
指定した回数が終わるまで、アニメーションを続けてしまうようです。
お手数ですが、メッセージの改ページ時にアニメーションを中断させるようにしていただくことは可能でしょうか……?

はい、ご指摘の通り、無限ループにする目的で大きな数字を入れております。
理解が及んでおらず申し訳ないのですが、大きな数字を入れるときと、無限ループでは処理などに大きな違いはありますでしょうか?

2022年9月13日火曜日 13:54:38 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Oct 7, 2022, 9:33:02 AM10/7/22
to 宴ユーザーグループ
すみません。私の方でも想定外でしたが、Autoの時はエフェクトのスキップがされないのでSkippableで回数を大きくした疑似無限ループがあると動作しないです。
「改ページと同時にループエフェクトをスキップして終わらせる」という処理ができなかったので拡張して実装できるようにしました。
宴のバージョンを最新にアップデートした後、添付のパッケージファイルを適用してください。
(添付ファイルのダウンロード後に、拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)

〇やりかたその1  WaitTypeの拡張
WaitTypeに、
SkipOnBrPage 改ページ待ちの終わりで、エフェクトをスキップさせて終了
SkipOnInput 入力待ち、改ページ待ちの終わりで、エフェクトをスキップさせて終了
というものを追加しました。
また、無限ループのエフェクトの場合でも、エフェクトスキップを可能なようにしました。PingPongの場合は偶数ループ(つまり初期状態)になります。

サンプル: Tweenを無限ループにして、WaitTypeをSkipOnBrPageに
ss_0516.png

〇やりかたその2 EndPageコマンドとSkipEffectコマンドの併用
SkipEffectコマンドのArg2に「TRUE」を設定することで、無限ループのエフェクトもスキップできるように拡張しました。
また、EndPageコマンドを使うと、改ページ後に行う動作を設定できます。
これと組み合わせることで、改ページ後にSkipEffectでループコマンドをスキップして強制終了させることができます。

ss_0518.png



基本的には「その1」のほうが簡単だと思います。
改ページ時の動作を凝る場合で、改ページ時に他にも処理を行いたい場合は、EndPageコマンドを使う「その2」のほうを検討してみてください。


参考までに、関連ドキュメントです。
拡張前のものなので、ここで書いた新しいWaitTypeなどについてはまだ載っていません。
WaitTypeとSkipEffectコマンド
2022年10月6日木曜日 7:02:09 UTC+9 hn:
FixSkipLoopEffect.unitypackage

hn

unread,
Oct 10, 2022, 7:08:04 PM10/10/22
to 宴ユーザーグループ

ご対応いただきありがとうございます!
宴のバージョンを3.11.7にアップデート後、いただいた添付パケージをインポートして動かそうとしたのですが、
以下のエラーが出てしまい、動かすことができません……。

Assets/Utage/Scripts/ADV/Scenario/AdvWaitManager.cs(224,31): error CS0246: The type or namespace name 'IAdvCommandEffectLoop' could not be found (are you missing a using directive or an assembly reference?)


何度もお手数おかけしてしまい申し訳ないのですが、
原因にお心当たりありましたらご教示お願いいたします。

2022年10月7日金曜日 22:33:02 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Oct 11, 2022, 7:31:31 AM10/11/22
to 宴ユーザーグループ
すみません。足りないファイルがあったかもしれません。
お手数ですが、こちらの添付のパッケージファイルを適用しなおしてみてください。
(添付ファイルのダウンロード後に、拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)


2022年10月11日火曜日 8:08:04 UTC+9 hn:
FixSkipLoopEffect2.unitypackage

hn

unread,
Oct 14, 2022, 10:35:05 PM10/14/22
to 宴ユーザーグループ
ご対応ありがとうございます!
修正いただいた通りの挙動をすることを確認いたしました!

ご紹介いただいたドキュメントを元に、
いただいたスクリプトをお借りして作成させいただきます。
お忙しい中、ご丁寧に対応していただき誠にありがとうございました。

2022年10月11日火曜日 20:31:31 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages