FC2ブログ
    07 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 09

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Animatorでアニメーション管理しているときに終了を待ったりスキップしたりしたかった 

    こんにちは。
    大坂です。

    Animtorを使用しているときにスクリプトでアニメーションの終了を待ったり、アニメーションを最後まで飛ばしたいときのお話。

    終了を待つのはこんな。
        
    private IEnumerator PlayAnimation()
    {
    var animator = GetComponent<Animator>();
    animator.SetTrigger("Show");
    // Animatorのステート変更に1フレームかかるので待つ
    yield return new WaitForEndOfFrame();
    // 終了するまで待つ
    yield return new WaitWhile(() => animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f);
    Debug.Log("アニメーション 終わったよ。");
    }

    なんか1フレーム待たないとうまく動かないみたいです。
    AnimatorのLayer変えてる場合は「GetCurrentAnimatorStateInfo(0)」の「0」を変える必要があります。
    BaseLayer使っているならそのままです。

    さて続いて最後まで飛ばしたいとき
        
    private IEnumerator SkipAnimation()
    {
    var animator = GetComponent<Animator>();
    animator.SetTrigger("Show");
    // Animatorのステート変更に1フレームかかるので待つ
    yield return new WaitForEndOfFrame();
    // アニメーションの最後にする
    animator.Play(animator.GetCurrentAnimatorStateInfo(0).fullPathHash, 0, 1);
    }

    こんな感じですね。
    まぁ実際にはアニメーションを動かしてすぐに最後に飛ばすなんてことはないと思うので工夫して使ってください!

    では今週もこの辺でノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/659-7a9d8b04
    この記事にトラックバックする(FC2ブログユーザー)