Live2Dモーションが遷移時に逆再生されてしまう

34 views
Skip to first unread message

obustat YT

unread,
Dec 19, 2025, 8:50:24 AM (4 days ago) Dec 19
to 宴ユーザーグループ
Unityの習熟度: 中級者
宴のバージョン: 4.2.4
UnityのバージョンとOS: Unity6000.0.62f1 Windows

マッドネスラボ様、はじめまして。
宴でのLive2Dモーション遷移の制御方法についての質問です。

宴の機能を使ってモーションA(ループ)→モーションBへの遷移を作りました
遷移自体は問題なく行われるのですが、現状挙動としては
「モーションAが高速で最初のフレームまで巻き戻る」→「モーションBを再生」
という動きになってしまっており、想定外の動きになってしまい困っています。
これを
「モーションAが等速で最終フレームまで再生」→「モーションBを再生」
という遷移にするにはどうすれば良いでしょうか…というのが質問になります

こちらについて先んじてLive2D公式に質問をし、回答をいただいたのですが、CubismSDKでのモーション遷移は基本的にUnityMecanimの機能を使用想定のようでして、今回のように宴上でのモーション遷移をする場合について解決に至る方法ではありませんでした。
やりとりがこちらになります( https://creatorsforum.live2d.com/t/topic/3773/4

お忙しいところ恐れ入ります、何卒よろしくお願い致します。
現象動画.gif

マッドネスラボ

unread,
Dec 19, 2025, 8:10:45 PM (3 days ago) Dec 19
to 宴ユーザーグループ

宴でも、UnityのMecanim(Animator)を使っている点では同じです。
https://madnesslabo.net/utage/?page_id=9621#Unity

ただ、宴の基本動作としては、モーション切り替え時にプログラムから指定のモーションに切り替えるようになっていてモーションがブレンドされます。
これは前のモーションから今のモーションにスムーズにつながるようにするための基本機能なのですが、
今回のようなケースではこれが邪魔になるため別のやり方をする必要があります。

モーションをブレンドせずにつなげたい場合、
Live2D様のご提案にあるように、「Has Exit Time」を設定する必要があるのですが、
この機能はAnimator上で設定した自動遷移の際にのみ機能します。

こちらが参考になると思いますので、こちらをベースに
Animatorに
・自動遷移の条件となる変数を作る
 (宴のセーブロード機能としてAnimator Parameters を保存しているわけではないので、追加するParametaersはTriggerで)
・つなげたいモーション同士に遷移条件を設定 
 ・Has Exit Timeをオン
 ・さきほど追加したパラメーターを、TrasitionのConditionsの「+」ボタンを押して設定


あとは、その遷移条件となるパラメーターを宴のシナリオ上から設定可能なようにします。

簡単なのは、BroadcastMessageByNameコマンドを使用することです。


1. BroadcastMessageByNameで呼び出される次のようなコンポーネントを作る
using UnityEngine;
namespace Utage
{
class Sample : MonoBehaviour
{
//BroadcastMessageByNameコマンドから呼び出される
//シナリオ上では、Arg2に「SetTrigger」名前を設定
void SetTrigger(AdvCommandBroadcastMessageByName command)
{
//Arg4
var trigger = command.ParseCell<string>("Arg4");
var animator = this.GetComponentInChildren<Animator>(true);
animator.SetTrigger(trigger);

// Debug.Log("Live2DMotionTrigger SetTrigger:" + trigger);
}
}
}

2.上記コンポーネントを、Live2dのプレハブにAddComponent

3.シナリオからBroadcastMessageByNameコマンドで呼び出す
Arg1:キャラクター名
Arg4:AnimatorのTrigger名
ss_1305.png


動作確認してはいないのですが、だいたいこのような流れで行けると思います。
一応セーブロードが正常に動作するかもチェックしてみてください。



2025年12月19日金曜日 22:50:24 UTC+9 obustat YT:

obustat YT

unread,
Dec 21, 2025, 12:48:17 AM (yesterday) Dec 21
to 宴ユーザーグループ
ご回答ありがとうございます!
ご教示いただいた方法でUnityMecanimのトランジション機能を使用することができ、TransitionDurationを0にすることで
「モーションAが等速で最終フレームまで再生」→「モーションBを再生」という理想形を実現することができました!
ここしばらく悩んでいた箇所だったので、解決できてめちゃくちゃ嬉しいです…迅速で丁寧なご回答、本当にありがとうございます!

宴のおかげで長年の夢だったゲーム制作を着実に進められています。素晴らしいツールをご制作いただいたことを、この場をお借りして改めてお礼申し上げます…ありがとうございます!
UnityMecanim設定.png

2025年12月20日土曜日 10:10:45 UTC+9 マッドネスラボ:

obustat YT

unread,
Dec 21, 2025, 12:49:26 AM (yesterday) Dec 21
to 宴ユーザーグループ
補足です。セーブロードも正常に動作しました!

2025年12月21日日曜日 14:48:17 UTC+9 obustat YT:
Reply all
Reply to author
Forward
0 new messages