Unityのアニメータで1回だけアニメーションさせる

Unityのアニメーションはデフォルトでループします。
そうではなく、例えば入力があったときに1回だけアニメーションさせたい場合です。
アニメータを使う方法と、旧レガシーアニメーションを使う方法を書きます。


<アニメータを使用する場合>
1.Animatorファイルを作成する

2.Animatorコンポーネントを追加し、Animatorファイルをアタッチする
1回だけアニメーション

3.Animationファイルを作成する

4.Animatorファイルのステートを作成する
1回だけアニメーション
①空のステートを作成する。
「右クリック」→「Create State」→「Empty」
 
②空のステートをデフォルトにする。
「New Stateを選択し右クリック」→「Set as Layer Default State」
※入力があった時に動作させたいので、最初のアニメーションは空にしておきます

③トリガパラメータを作成する。
「左上の+を押す」→「Trigger」
 
④作成したAnimationファイルへの遷移を作成する。
「New Stateを選択し右クリック」→「Make Transition」
 
⑤遷移条件をトリガにする。
 
5.作成したAnimationファイルのループを外す。
「Projectのアニメーションを選択」→「Loop Timeのチェックを外す」
 ※1回だけ動作させるときはループを外します
1回だけアニメーション

6.スクリプトを記述しアタッチする

using UnityEngine;
using System.Collections;

public class OnceAnimation : MonoBehaviour {

void Update () {
if (Input.GetButtonDown("Fire1") ) {
// アニメーターで動かす
GetComponent<Animator>().SetTrigger("OnceAnim");
}
}

}

<旧レガシーアニメーションを使用する場合>
1.Animationファイルを作成する

2.Animationコンポーネントを追加し、Animationファイルをアタッチする。Play Automatically のチェックを外す。
※チェックがあると、シーン起動時にすぐアニメーションします。
1回だけアニメーション

3.Animationファイルをデバッグモードで開き、Legacy をチェックします。
「右上のマーク」→「Debug」
※Legacyアニメーションの場合、必要です
1回だけアニメーション

4.スクリプトを記述しアタッチする
using UnityEngine;
using System.Collections;

public class OnceAnimationLegacy : MonoBehaviour {

void Update () {
if (Input.GetButtonDown("Fire1") ) {
// 旧アニメーションで動かす
GetComponent<Animation>().Play("CubeAnimationLegacy");
}
}

}

<実行例>Cubeがアニメータ、Capsuleがレガシー。今回同じアニメーションなので同じ動きをしています。
1回だけアニメーション

関連記事

コメント

非公開コメント