★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
オプション

一時停止のやり方

初挑戦ながらゲームを作ろうと、UnityにてSDKのMotionからアニメーションを再生していろいろ試しているのですが
一時停止機能はないのでしょうか?
クリックするたびに一時停止→再生を繰り返してちょっとずつアニメーションを進めたいのですが
やり方が分からず困っています。

初歩的な質問だったらすみません

タグ付けされた:

コメント

  • オプション
    @tac240 さん

    MotionとはCubismMotionControllerのことでしょうか?
    そうであれば、再生したアニメーションを一時停止する機能はございません。
    CubismMotionControllerはUnityのPlayable APIを利用してAnimationClipを再生しているため、
    ユーザ側でカスタマイズすることで実現が可能だと考えられます。
  • オプション
    解決したので、CubismSDK使っていない、Unity側の話になってしまいますが一応記載します。
    Unityでアニメーションを再生する方法は現在のところ
    Animator Controllerを使う、Simple Animationを使う、Timelineを使う のようなのですが
    小規模のそんなに数が多くないアニメーションだとAnimator Controllerは多機能すぎて複雑
    というか素人の自分にはさっぱりわからぬだったのでSimple Animationを使いました。
    Unity公式がだしてるアセット?になりまして、詳しくは検索どうぞ。

    Simple Animationと、Unityの当たり判定に使われるCollider、
    アニメーションの停止位置を調べるのに使うnormalizedTime、
    Collider上にマウス持ってくと勝手に反応してくれるOnMouseDown()

    この4つを使って

    using UnityEngine;

    //クラス名は適当です
    public class AnimationManager : MonoBehaviour {

    [SerializeField]
    private SimpleAnimation _simpleAnimation;
    //再生開始位置の初期値です。normalizedTimeは0~1で小数点なのでfloatです
    float m_normalizedTime = 0f;

    public void OnMouseDown(){
    //再生開始位置をセットする。初クリックの時は0からですね。マウス押したとき呼ばれます。
    //Defaultって名前のアニメーションの、再生開始位置がm_normalizedTime(停止した位置)からになります。
    _simpleAnimation.GetState("Default").normalizedTime = m_normalizedTime;
    _simpleAnimation.Play("Default");
    }

    public void OnMouseUp(){
    //Stopする前にアニメ停止位置を保存する。マウス離したときに呼ばれます。Stopした後にこれ書くと常に0になっちゃうので注意
    m_normalizedTime = _simpleAnimation.GetState("Default").normalizedTime;
    _simpleAnimation.Stop("Default");
    }
    }

    詳しい手順は省いているので真似する時は上の4つ検索して調べてください。
    これとcolliderをLive2Dで作ったオブジェクトにくっつけてあげると、
    colliderの範囲内でマウス押したときPlayで再生されて、マウス離した瞬間一時停止されます。
    そしてもう一度マウス押すと続きから再生。

    これをベースにいろいろいじると大体のことはできそうな気がします。
    素人の考えた方法なのでもっといいのがあるかもしれませんが、同じ悩みの人の参考になれば幸いです。
コメントするにはサインインまたは登録して下さい。