Animatorを一定回数繰り返したい【Unity】【簡単】

unity

unityでanimationを使うと,永遠に繰り返すか,一度だけ実行されるか,,

と思っていたのですが

簡単に実装できてしまったので,紹介します.


実装環境

  • Unity.2019.3.3f.1

実装方法

1.animationの作成

Animationタブを加える.

そうすると,Animationたぶが出てくる

HierarchyからGameObjectを選択すると,先ほど作成したタブにCreateボタンが出てくるのでそれをクリック.

適当な名前で保存すると,AnimationとAnimatorControllerが出現

適当にAnimationを作り,

inspecterからLoopにチェックを入れる(大事)

今回はearthquakeというanimationをいじる

2.AnimatorをつけたGameObjectにスクリプトをつける

まず,Animatorからスクリプトを再生するのは

public class camera_earthquake : MonoBehaviour
{
    Animator earthQ;//適当な名前で良い
    // Start is called before the first frame update
    void Start()
    {
        earthQ = this.gameObject.GetComponent<Animator>();//animatorを取得
        earthQ.Play("earthquake");//Animationの名前を入れてplay
    }
}Code language: HTML, XML (xml)

今回は10回繰り返したらやめることとする.

「GetCurrentAnimatorStateInfo(0).normalizedTime」これがanimationを繰り返した回数を示す.

つまり,半分まで実行されると,0.5
一回実行されると1,5回実行されると5

便利.

ちなみに「AnimatorStateInfo(0)」の数字はレイヤー番号を示す.
基本的には0で大丈夫だと思うが,アニメーションレイヤーについてはリファレンスを参照

https://docs.unity3d.com/ja/2018.4/Manual/AnimationLayers.html

アニメーションレイヤー

作成したコードはこんな感じ

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

public class camera_earthquake : MonoBehaviour
{
	Animator earthQ;
    // Start is called before the first frame update
    void Start()
    {
        earthQ = this.gameObject.GetComponent<Animator>();
        earthQ.Play("earthquake");
    }

    // Update is called once per frame
    void Update()
    {

    	if(earthQ.GetCurrentAnimatorStateInfo(0).normalizedTime > 10)
    	{
    		//10回繰り返したら
    		//enabledで停止
    		earthQ.enabled = false;
    	}
    }
}
Code language: HTML, XML (xml)

3.終わりに

これで上下に動かす地震のアニメーションを作成しました.

地震の作り方もメモしておかないとなぁ

コメント

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