本日は Unity の技術調査枠です。
基本変形(移動・回転・スケール)のアニメーションを作成する方法についてまとめます。
前回記事の続きになります。
bluebirdofoz.hatenablog.com
今回はルートモーションと他オブジェクトへの転用についてです。
ルートモーションの設定
前回記事で作成したプロジェクトを開きます。
Cube オブジェクトを Position X:5,Y:0,Z:0 に移動します。
この状態でシーンを再生してみます。
すると Cube オブジェクトは X:0,Y:0,Z:0 の位置に戻ってアニメーションを開始します。
これは前回アニメーションに Transform の Position 値を設定したためです。
理屈を考えれば当然の動きなのですが、オブジェクトに対して相対的な座標でアニメーションを設定したい場合も多いと思います。
こういった場合に利用するのがルートモーションです。
ルートモーションを設定するには、まず Animation ファイルを選択して Inspector パネルを開きます。
[Generate Root Motion Curves]をクリックします。
次に、Cube オブジェクトに追加された Animator スクリプトの[Apply Root Motion]にチェックを入れます。
この状態でシーンの再生を行います。
オブジェクトの位置から相対的にアニメーションが開始されました。
副次的な効果として、前回のアニメーションからも相対的な位置となります。
このため、最終的に座標を開始位置に戻さないアニメーションの場合、物体が相対的に進み続ける動きになります。
他オブジェクトへの転用
作成したアニメーションは同じコンポーネント要素を持つオブジェクトであれば、他オブジェクトに転用可能です。
一例として、新たに Sphere オブジェクトを作成します。
[Add Component]から Animator スクリプトを追加します。
Animator の[Controller]に Cube オブジェクトで作成した AnimatorController を設定します。
合わせて[Apply Root Motion]も有効にしています。
この状態でシーンの再生を行います。
Sphere オブジェクトに Cube オブジェクト同じアニメーションを設定できました。