MRが楽しい

MRやVRについて学習したことを書き残す

Unityで基本変形(移動・回転・スケール)のアニメーションを作成する その5(アニメーションを一度だけ再生する)

本日は Unity の技術調査枠です。
基本変形(移動・回転・スケール)のアニメーションを作成する方法についてまとめます。
前回記事の続きになります。
bluebirdofoz.hatenablog.com
今回はアニメーションを繰り返さず一度だけ再生する設定についてです。

アニメーションを繰り返さず一度だけ再生する

前回作成したアニメーションコントローラの設定だと、アニメーションが繰り返され、オブジェクトが上昇し続けます。
f:id:bluebirdofoz:20181001082447j:plain

今回はアニメーションを繰り返さず、一度だけ再生するように設定してみます。
これには2つの方法があります。

まず1つ目はアニメーションファイルの[Loop Time]を無効化する方法です。
anim ファイルを選択し、Inspector ビューから[Loop Time]のチェックを外します。
f:id:bluebirdofoz:20181001082501j:plain

これでアニメーションは一度しか再生されなくなりました。
Unity の[再生]ボタンで動作を確認すると、アニメーションが一度だけで止まるようになっています。
f:id:bluebirdofoz:20181001082517j:plain

次にもう1つの方法です。
効果を確認できるよう anim ファイルの[Loop Time]のチェックを戻しておきます。
f:id:bluebirdofoz:20181001082527j:plain

2つ目はアニメーションの状態を再生次第、すぐに初期状態に戻してしまう方法です。
アニメーションコントローラを選択し、[Animator]画面を開きます。
[CubeAnimation]を 右クリック -> Make Transition で[EntryState]へ線を引きます。
f:id:bluebirdofoz:20181001082537j:plain

前回作成した遷移とは逆方向の遷移が設定されました。
ここでトリガーの設定は行わず、[List is Empty]のままにしておきます。
これにより、[CubeAnimation]への遷移後、即座に状態が[EntryState]に戻るようになります。
f:id:bluebirdofoz:20181001082546j:plain

これでアニメーションが一度された後は[EntryState]に戻っているため、繰り返しアニメーションが再生されなくなります。。
Unity の[再生]ボタンで動作を確認すると、同様にアニメーションが一度だけで止まるようになっています。
f:id:bluebirdofoz:20181001082559j:plain

2つの方法は同じ動きですが、それぞれアニメーション実行後の状態が異なることになります。
必要に応じて使い分けましょう。
f:id:bluebirdofoz:20181001082621j:plain

アニメーションの繋がり

因みに2つ目の初期状態に戻す方法をそのまま利用すると、上昇アニメーションの最後が少しカクつく印象を受けると思います。
これはアニメーションの繋がりの設定がデフォルトだと、以下のように一部重なった状態になっているためです。
f:id:bluebirdofoz:20181001082711j:plain
上昇アニメーションの最後の部分が[EntryState]の[None]アニメーションの影響を受けているようです。

以下の通り、アニメーションが重ならないよう変更します。
1.[Exit Time](遷移先アニメーションの実行開始タイミング)を[1]に設定する。
2.[Transition Duration](重なりの秒数)を[0]に設定する。
f:id:bluebirdofoz:20181001082736j:plain

これで再生を行うと、上昇アニメーションが綺麗に再生されます。