【Unity】アニメーションをループ再生して滑らかに遷移させる方法

アニメーションのループ再生 Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「作成したアニメーションをループ再生させたい!」

「アニメーションのループ再生時に少し止まってしまう!」

というお悩みの方に向けた内容となっています。

Unityでは、アニメーションの機能を使ってキャラクターの様々な動きを作ることができます。

そして、このアニメーションにループ機能を設定しておくことで、繰り返して動かすことができます。

ただ、アニメーションの作り方次第では、ループ再生させた際に、動きが一瞬止まってしまったり、アニメーションが上手く繋がらなくなることがあります。

そこで、このページでは、Unityのアニメーションをループ再生させる方法と、ループ時に滑らかに動くようにする方法についてまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

アニメーションをループ再生する方法

まずは、アニメーションを作成してループ再生する方法を紹介していきます。

アニメーションの作成

アニメーションの作成は、2Dゲームではパラパラ漫画のように静止画を組み合わせて作ったり、オブジェクトに骨格を入れて作ったりします。

ここでは、以前作成したことがある以下のキャラクターを使っていきます。

このキャラクターの腕と足にはボーンが入っているので、ボーンを動かすことで、様々な動きを作れるようにしています。

そして、このキャラクターにアニメーションの機能を使い、以下のような動きを作ってみました。

詳しくは、以下のページで解説していますので、参考にしてみてください。

ループ再生を設定する

作成したアニメーションは、デフォルトではループ再生されるようになっているため、設定を行う必要はありません。

ただ、もし最初からループ再生されない場合は、「Loop Time」という設定を確認しておきましょう。

プロジェクトウィンドウから、アニメーションを作成した際に作られるAnimation Clipを選択すると、インスペクターウィンドウに「Loop Time」という設定が表示されます。

このLoop Timeにチェックを入れると、そのアニメーションがループ再生されるようになります。

なお、反対にアニメーションをループ再生させず、一回のみで止めたい場合は、このLoop Timeのチェックを外しておきましょう。

アニメーションを滑らかにループさせるコツ

ここからは、先ほどのアニメーションをループ再生する際に、滑らかにアニメーションを遷移させるためのコツを紹介していきます。

キーフレームの最初と最後を同じにする

キーフレームの最初の設定と最後の設定が異なると、ループで最初に戻る際にアニメーションに違和感が生じてしまいます。

今回の例では、最初と最後のキーフレームのボーンの回転量の設定が少し異なってしまっているので、最初に戻る時が滑らかではありません。

最初のキーフレーム
最後のキーフレーム

そこで、Animationウィンドウを開いて、最初のキーフレームを選択して「Ctrl+C」でコピーします。

そして、最後のキーフレームを選択して「Ctrl+V」でペーストしてあげます。

これで、最初と最後のキーフレームが完全に一致するため、滑らかにループ再生が始まるようになります。

実際に比較してみると、

修正前
修正後

足元を注視してみると分かりますが、ループして最初に戻るときにあった違和感が解消されているのが分かります。

「Loop Pose」を設定する

アニメーションの動きによっては、ループ時に一瞬止まってしまうということがあります。

このループ時の移動をより滑らかにする処理として、「Loop Pose」という設定があります。

ループ再生の設定をした時と同じく、Animation Clipを選択すると、インスペクターウィンドウに「Loop Pose」が表示されているので、この項目にチェックを入れることで、ループ遷移をより滑らかにすることができます。

今回のアニメーションでは、ほとんど大きな変化が無かったので必要なさそうですが、もし止まってしまう場合はチェックを入れておきましょう。

まとめ

このページでは、Unityでアニメーションをループ再生する方法と、ループ遷移時に滑らかに処理する方法についてまとめていきましたが、いかがでしたでしょうか?

Unityでアニメーションのループ再生を決めている項目は「Loop Time」で、チェックを入れるとループ再生され、反対にチェックを外すとループ再生されなくなります。

ループ再生する際は、最初と最後のキーフレームがずれていると、なめらかに遷移しなくなるため、コピーして同じ設定にするようにしましょう。

また、ループ遷移時に止まってしまうことがあるアニメーションでは、「Loop Pose」を設定することで、より滑らかに遷移するようになります。

最後までお読みいただきまして、ありがとうございました!

コメント