スポンサーリンク

【Unity】アニメーションを終わりまでスキップする方法

Unity

参考動画

AnimatorのPlayを利用する

using UnityEngine;

public static class AnimationEx
{
    //再生中のアニメーションを終わりまでスキップする
    public static void SkipAnimation(Animator animator, int layer = 0)
    {
        AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(layer);
        animator.Play(stateInfo.fullPathHash, layer, 1); //再生時間が0~1の範囲なので強制的に1にする
    }
}

このコードでは、現在再生されているアニメーションを、AnimatorのPlay関数を使ってスキップしています。Play関数の第3引数に1を設定することで、アニメーションの終わりまでスキップすることが出来ます。

使い方

using UnityEngine;

//スライムクラス
public class Slime : MonoBehaviour
{
    private Animator _animator; //自分のAnimator管理用

    private void Awake()
    {
        _animator = GetComponent<Animator>();   //自分自身についているAnimatorを取得
    }

    void Start()
    {
    }

    void Update()
    {
    }

    //スキップしたいタイミングで呼び出す
    public void SkipAnimation()
    {
        AnimationEx.SkipAnimation(_animator); //スキップする
    }
}

先ほど紹介した、AnimationEx.csをプロジェクトに追加して、スキップさせたいタイミングで、

 AnimationEx.SkipAnimation(スキップ対象のAnimator); //スキップする

このコードを呼び出すだけです!

タイトルとURLをコピーしました