MRが楽しい

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

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

本日は Unity の技術調査枠です。
基本変形(移動・回転・スケール)のアニメーションを作成する方法についてまとめます。
今回はアニメーションを一度だけ再生する方法です。

前回記事

以下の記事の続きになります。
bluebirdofoz.hatenablog.com

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

前回作成したアニメーションコントローラの設定だとアニメーションが繰り返され、オブジェクトが移動し続けます。

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

Loop Timeを無効化する

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

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

Stateを変更する

もう1つはアニメーションの状態を再生次第、すぐに待機状態に戻してしまう方法です。
アニメーションコントローラを選択し、[Animator]画面を開きます。

待機状態に戻す遷移を作成します。
[CubeAnimation]を 右クリック -> Make Transition で[WaitState]へ線を引きます。

ここでトリガーの設定は行わず、[List is Empty]のままにしておきます。
これにより[CubeAnimation]への遷移した後、即座に状態が[WaitState]に戻るようになります。

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

2つの方法は同じ動きですが、それぞれアニメーション実行後の State が異なることに注意が必要です。

アニメーションの繋がり

2つ目の待機状態に戻す方法をそのまま利用すると、アニメーションの最後が少しカクつきます。
これはアニメーションの繋がりがデフォルトだと、以下のように一部重なった状態になっているためです。

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

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