そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】アニメーションをスクリプトから動的変更 Simple Animation 関数まとめ

自分用にSimple Animationの関数まとめ 

Simple Animationとは

tsubakit1.hateblo.jp

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnimeTest : MonoBehaviour
{

    private SimpleAnimation simpleAnimation;

    [SerializeField] private AnimationClip anime_clip;

    void Start ()
    {
        simpleAnimation = GetComponent<SimpleAnimation>();


        // デフォルトのクリップを再生する
        simpleAnimation.Play();

        // 特定のクリップを再生する
        simpleAnimation.Play("AAA");

        // アニメーションを停止する
        simpleAnimation.Stop();

        // 再生中のアニメーションを頭から流しなおす
        simpleAnimation.Rewind();

        // 1秒かけてAAAステートに遷移する
        simpleAnimation.CrossFade("AAA", 0.2f);


        //アニメとステート追加する
        simpleAnimation.AddState(anime_clip, "CCC");

        //前のアニメーションが終わった後に切り替える
        simpleAnimation.CrossFadeQueued("AAA", 0.2f, QueueMode.CompleteOthers);
        simpleAnimation.CrossFadeQueued("BBB", 0.2f, QueueMode.CompleteOthers);

        //アニメーション全停止 重要 CrossFadeQueuedでエラー出た時は直前に使う
        simpleAnimation.Stop();

    }
    
    void Update()
    {
        //Aキーを押すとデフォルトに設定したアニメーションの再生
        if (Input.GetKeyDown(KeyCode.A))
        {
            simpleAnimation.CrossFade("Default", 0.3f);
        }

        //Sキーを押すとステート名AAAのアニメーションを再生
        if (Input.GetKeyDown(KeyCode.S))
        {
            simpleAnimation.CrossFade("AAA", 0.3f);
        }




        //アニメーション終了の検出
        if (!simpleAnimation.isPlaying)
        {
            Debug.Log("アニメ終了");
        }
        else
        {
            Debug.Log("アニメ実行中");
        }
    }
}