【Unity】アニメーションをなめらかにループさせる方法解説

URLをコピーする
URLをコピーしました!

CGBoxの一部の記事にはアフィリエイト広告が含まれております。

Unityで開発をしていると、キャラクターにこんな動きをさせたい!と思うことがあると思います。

そんなときUnityのアニメーション機能を使うと便利です。

そしてアニメーション機能を使う上で、大事になるのがループの設定です

今回はその、アニメーションをループさせる方法について解説していきます!

目次

アニメーションループの設定方法

アニメーションのループを設定するために、以下の手順で解説していきます。

  1. キャラクターを配置する
  2. アニメーションを設定する
  3. アニメーションをループさせる

それでは、順番に設定していきましょう。

キャラクターを配置する

今回はFreeAssetの「Character Pack: Free Sample」からキャラクターの3Dモデルとアニメーションをお借りして、アニメーションを設定していきます。

下記サイトからアセットをダウンロードして、Unityにインポートしてください。

あわせて読みたい
Character Pack: Free Sample | 3D Humanoids | Unity Asset Store Elevate your workflow with the Character Pack: Free Sample asset from Supercyan. Find this & other Humanoids options on the Unity Asset Store.

まずは地面として、3DObject→Planeを作成しておきます。

インポートしたアセットから、キャラクターをシーンに配置します。

インポートした「Supercyan…」フォルダ→PrefabsBaseHigh QualityMaleFree1をヒエラルキーにドラッグアンドドロップします。

最初はキャラクターが後ろを向いているので、見やすいようにカメラ位置を変更します。

これでアニメーションを設定していくキャラクターが配置できました。

アニメーションを設定する

ここからはキャラクターに、手を振るアニメーションを設定していきます。

Asssets内で右クリックCreateAnimator Controllerを作成。

Animator Controllerとはキャラクターのアニメーションを制御する機能のこと。

後からわかりやすいように、名前を「ManAnimator」に変更しておきます。

作成したManAnimatorをダブルクリックで開きましょう。

Animatorタブ内で右クリックCreate StateEmptyで新しい状態を作成。

名前を「New State」から「Wave」に変更しておきます。

作成したWaveにアニメーションを割り当てます。

Motion」項目の◎ボタンをクリック、一番下にある「wave」を選択します。

これでManAnimatorに手を振るアニメーションを設定することができました。

続いて、キャラクターにManAnimatorをアタッチしていきます。

先ほど配置したキャラクターのインスペクターを開きます。

Controller項目のをクリックし、作成したManAnimatorを選択します。

ここまで設定できたら、実行してアニメーションを確認してみましょう。

一度アニメーションが再生されると動きが止まってしまいます。

ここからループするように設定していきましょう。

アニメーションをループさせる

手を振る動きをループさせたいときは、アニメーションのループ設定をONにする必要があります。

Assetsフォルダ→「Supercyan…」→Animations→一番下の「common_people@wave」を選択しインスペクターを開きます。

Loop Timeという項目があり、これにチェックを入れるとループするようになります。

チェックを入れたら、最後に最下部のApplyボタンを押して変更を反映しましょう。

再び実行してアニメーションを確認してみましょう。

ループ設定が反映されて、手を振る動作を繰り返すようになりました。

アニメーションのループがうまく動かない時

アニメーションがループしない

アニメーションがループしない時確認したいのは、Loop Timeにチェックを入れた後、必ずApplyボタンを押すことです。

Loop Timeにチェックを入れてエディタ上で変更したように見えても、Applyを押さずに閉じてしまうと変更が反映されずループが設定できていないので注意しましょう。

アニメーションが一瞬止まる

ループ再生を設定すると、アニメーションによっては一瞬止まるように見えることがあります。

先ほどのキャラクターで、投げる動作をループさせてみます。

アニメーションの開始フレームと最終フレームのところが上手くつながっていないと、下のようにカクッとした動きになってしまいます。

Unityのアニメーションにはループ変遷をなめらかにする「Loop Pose」という機能が用意されています。

ループさせているアニメーションのインスペクターから、LoopTimeの下にある「Loop Pose」にチェックを入れ、Applyを押すことで設定できます。

実行してみるとループがなめらかになり、カクッとした動きが軽減されました。

アニメーションがずれる

ループ再生をすると、アニメーションがずれる場合もあります。

そんなときに設定したい項目を紹介します。

まずは、「Root Transform Rotation」です。

この項目はアニメーションの回転に関する設定になります。

Bake Into Poseにチェックを入れると、キャラクターの向きがアニメーションの回転による影響を受けなくなります。

←がチェックを入れていないキャラクター、→がチェックを入れたキャラクターです。

左のキャラクターはループによって、顔の向きが動きすぎているように見えます。

Bake Into Poseにチェックを入れた右のキャラクターは、顔の動きが安定するようになりました。

続いて紹介するのは、「Root Transform Position(Y)」です。

これはY軸方向の動きに関する設定項目です。

Bake Into Poseにチェックを入れると、アニメーションによるキャラクターのY軸方向の移動が無効になります。

←がチェックを入れていないキャラクター、→がチェックを入れたキャラクターです。

頭に注目すると分かりやすいのですが、左のキャラクターは上下の動きが大きく、ループが上手く繋がっていません。

Bake Into Poseにチェックを入れた右のキャラクターは、ブレが少なく動くようになりました。

今回は割愛しますが、Root Transform Position(XZ)という項目もあります。

こちらではX,Z軸方向のアニメーションによる動きが制限できます。

アニメーションが横にずれる場合はそちらのBake Into Poseを設定してみましょう。

アニメーションをスクリプトから一定回数ループさせたい時

アニメーションを一定回数だけループさせたいときもあるかと思います。

    Animator.GetCurrentAnimatorStateInfo(0).normalizedTime

そんな時は上のコードで、アニメーションを繰り返した回数が取得できます。

再生開始時は0、半分再生すると0.5、10回再生すると10といったようにループ回数が取得できるので

    	if(Animator.GetCurrentAnimatorStateInfo(0).normalizedTime > 10)
    	{

    		Animator.enabled = false;
    	}

このように10回再生したらアニメーションを無効にしますよ、といった使い方もできます。

おすすめアセット

FREE – 32 RPG Animations

こちらはRPG制作に使えるアニメーションが入った無料アセットです。

移動アニメーションから、攻撃、魔法モーションまで含まれています。

RPGを作りたい方や、アニメーション設定を色々試してみたい方にオススメです!

あわせて読みたい
FREE - 32 RPG Animations | 3D Animations | Unity Asset Store Elevate your workflow with the FREE - 32 RPG Animations asset from Blink. Find this & other Animations options on the Unity Asset Store.

Low Poly Animated People

こちらは有料になりますが、100種類以上の人型キャラクターとアニメーションが含まれたアセットです。

Low Polyで作られていてかわいい雰囲気のキャラクターなので、世界観が合っているならオススメです!

あわせて読みたい
Low Poly Animated People | 3D Humanoids | Unity Asset Store Elevate your workflow with the Low Poly Animated People asset from polyperfect. Find this & other Humanoids options on the Unity Asset Store.

まとめ

  • アニメーションのループ再生は「Loop Time」にチェック
  • Applyで変更確定を忘れずに
  • Loop Pose」でループがなめらかに
  • Bake Into Pose」でずれを直そう

以上、アニメーションのループ再生について解説してきました。

アニメーションの設定はとっつきにくいですが、アセットを使えば楽に設定できます。

使いこなせれば見栄えが格段にアップするので、ぜひマスターしたい分野ですね!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Unityメインの個人開発者。UnityでAIを学習させてみたり、野球ゲームを作ってみたりと色々してました。現在はライターとして、Unityで開発する人の力になる記事が書けるよう奮闘中。

目次
閉じる