MRが楽しい

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

Unityで基本変形(移動・回転・スケール)のアニメーションを作成する その3(ルートモーションの設定・転用)

本日は Unity の技術調査枠です。
基本変形(移動・回転・スケール)のアニメーションを作成する方法についてまとめます。
前回記事の続きになります。
bluebirdofoz.hatenablog.com
今回はルートモーションと他オブジェクトへの転用についてです。

ルートモーションの設定

前回記事で作成したプロジェクトを開きます。
Cube オブジェクトを Position X:5,Y:0,Z:0 に移動します。
f:id:bluebirdofoz:20180918010819j:plain

この状態でシーンを再生してみます。
すると Cube オブジェクトは X:0,Y:0,Z:0 の位置に戻ってアニメーションを開始します。
f:id:bluebirdofoz:20180918010826g:plain

これは前回アニメーションに Transform の Position 値を設定したためです。
理屈を考えれば当然の動きなのですが、オブジェクトに対して相対的な座標でアニメーションを設定したい場合も多いと思います。
f:id:bluebirdofoz:20180918010839j:plain

こういった場合に利用するのがルートモーションです。
ルートモーションを設定するには、まず Animation ファイルを選択して Inspector パネルを開きます。
[Generate Root Motion Curves]をクリックします。
f:id:bluebirdofoz:20180918010851j:plain

次に、Cube オブジェクトに追加された Animator スクリプトの[Apply Root Motion]にチェックを入れます。
f:id:bluebirdofoz:20180918010858j:plain

この状態でシーンの再生を行います。
f:id:bluebirdofoz:20180918010905g:plain
オブジェクトの位置から相対的にアニメーションが開始されました。
副次的な効果として、前回のアニメーションからも相対的な位置となります。
このため、最終的に座標を開始位置に戻さないアニメーションの場合、物体が相対的に進み続ける動きになります。

他オブジェクトへの転用

作成したアニメーションは同じコンポーネント要素を持つオブジェクトであれば、他オブジェクトに転用可能です。
一例として、新たに Sphere オブジェクトを作成します。
[Add Component]から Animator スクリプトを追加します。
f:id:bluebirdofoz:20180918011009j:plain

Animator の[Controller]に Cube オブジェクトで作成した AnimatorController を設定します。
合わせて[Apply Root Motion]も有効にしています。
f:id:bluebirdofoz:20180918011019j:plain

この状態でシーンの再生を行います。
f:id:bluebirdofoz:20180918011027g:plain
Sphere オブジェクトに Cube オブジェクト同じアニメーションを設定できました。