CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】アニメーションが上手く動かない時の解決方法

こんにちは!Unityでキャラクターにアニメーションを設定したのはいいけど、上手く動かない…という経験をしたことがありませんか?
アニメーションが全く動かなかったり、位置がずれたりとなにかとつまずきやすいところですよね。
そこで本記事では、アニメーションを扱う時によく起きる問題と解決方法を紹介していきます!
アニメーションが再生されない

本項では、最もよく起きる「アニメーションが再生されない」問題が起きた時に試したい解決方法を紹介していきます。
今回アニメーションを設定するキャラクターとして、アセットストアから手に入るUnity-Chanの3Dモデルを利用します。
以下のリンクから無料でダウンロードすることができます。
https://prf.hn/click/camref:1101lEIi6/destination:https://assetstore.unity.com/packages/3d/characters/unity-chan-model-18705
モデルをHumanoid型にする
アニメーションを設定するキャラクターは、人型キャラクターが大半だと思います。
人型キャラクターのアニメーションが動かない時にまず確認したいのは
モデルのAnimation TypeをHumanoidに設定しているかどうかです。
下のように、キャラクターに設定してあるAnimator内のAvatarにはモデルが設定されています。

このモデルのインスペクターを開きRigタブ内のAnimation Typeを確認してみましょう。

こちらがGenericになっていることがあります。
このままですと、プログラムを実行しても人型のキャラクターのアニメーションが動きません。
その場合こちらをHumanoidに変更し、Applyを押しましょう。

Humanoid型とは何かについては下の記事で解説しています。

Animatorの設定を確認
Humanoid型にしてもアニメーションが再生されない場合、確認したいのがAnimatorの設定です。
キャラクターにアニメーションを設定するためには、下のようなAnimator内の
ControllerにAnimatorControllerをセットする必要があります。
この場合、Noneとなっておりセットされていませんのでアニメーションは動きません。

下のように、AnimatorControllerをドラッグアンドドロップで設定しておきましょう。

AnimatorControllerの設定を確認
AnimatorController内の設定も確認してみましょう。
キャラクターには、AnimatorControllerで設定された条件に沿ってアニメーションが適用されます。
このAnimatorController内の、矢印による遷移が上手く機能しているかを確認しましょう。

上の例ではRunのアニメーションを動かしたくても、Idle状態から矢印が繋がっていないためRunは再生されません。
下のように、MakeTransitionで矢印を伸ばし、Conditionsからアニメーションが切り替わる条件を正しく設定しておきましょう。

とにかく一つのアニメーションの動作を確認したいということであれば、下のようにEntryから直接つながるStateにアニメーションを設定すれば手っ取り早く動かすことができます。
まずはこのようにして動くことを確認してから、遷移条件の確認をすることがオススメです。

アニメーションの位置がずれる
アニメーションをループ再生していると、位置がだんだんとずれていったり
向きが微妙に変わっていったりする場合があります。
そんな時のために、アニメーションの位置や向きを固定する項目があります。
まず再生しているアニメーションのインスペクターを開きましょう。

インスペクター内に下のような設定項目があります。
このうち、下の三項目のBake into Poseにチェックを入れるようにしましょう。
- Root TranformRotation
- Root Transform Position(Y)
- Root Transform Position(XZ)

これにより、キャラクターがアニメーションによる移動や回転の影響を受けなくすることができます。
アニメーションクリップが編集できない
アニメーションクリップを編集しようとした時に、下のように「Read-Only」と表示され、編集できない場合があります。

そんな時は、インスペクターからEdit画面が開ける場合はそこから編集するか

編集したいアニメーションクリップを選択した上でCtrl+Dを押し、複製してみましょう。

すると下のように新たにアニメーションクリップが複製され

複製された方のクリップではRead-Onlyが外れて編集できるようになっています。

アニメーションのループが上手くできない
アニメーションにはループ再生をする設定項目があります。

アニメーションクリップ内のLoopTimeにチェックを入れることで設定できるのですが
このループが違和感のある繋がり方になることがあります。

そんなときに確認したい項目を二つ紹介します。
一つ目は、正しくループしているかを示すloop matchの色です。
アニメーションクリップ内では、下のようにループの開始位置と終了位置を指定することができます。

この開始位置と終了位置によってはループが自然に繋がらず、loop matchが赤色や黄色で表示されるのです。
この位置を調整して、すべてが緑色になるようにしましょう。
そしてもうひとつ、下のようなLoop Poseという設定項目があります。

Loop Poseはループ遷移を滑らかにしてくれる設定なので、チェックを入れておきましょう。
これらを設定すると下のようにループの不自然さが改善されました。

アニメーションのループ再生については、下の記事でも解説しています。

おすすめアセット
Mega Animations Pack
https://prf.hn/click/camref:1101lEIi6/destination:https://assetstore.unity.com/packages/3d/animations/mega-animations-pack-162341
Mega Animations Packは、220種類以上のアニメーションが入ったアセットです。
戦闘用のモーションから、コミカルな動きのモーションなど様々な種類が含まれています。
武器や小道具も充実しておりお得感のあるアセットです。
FPS Animation Framework

https://prf.hn/click/camref:1101lEIi6/destination:https://assetstore.unity.com/packages/tools/animation/fps-animation-framework-238641
FPS Animation Frameworkは、FPSゲームに使えるアニメーションが入ったアセットです。
銃を構えるアニメーションやリロードなど、FPSゲームに必須のアニメーションが含まれています。
FPSゲームを開発する際に必ず役に立つアセットです。
まとめ
以上、アニメーションが上手く動かない時の解決方法について解説してきました。
アニメーションが動かない原因、解決方法は様々です。
本記事で紹介した方法で問題が解決されれば嬉しいです!




