目次
Root Motionを利用したアニメーション
Unity5でGenerate Root Motion Curvesが追加されたお陰で、このようなアニメーションを親オブジェクト無しでも作成出来るようになりました。
Unity4ではエディターで自作したアニメーション*1は常に親オブジェクトとの相対座標を見ていたため、汎用的にその場でアニメーションするギミックを用意したい場合は、空の親オブジェクトを設定する必要がありました。
Unity5よりUnityエディターでRoot Motion自体を動かすアニメーションの作成が可能になり、単体でも出来るようになった…なる話です。
Root Motionのあるアニメーションを作成する
Root Motionのあるアニメーションを作成する手順は非常に簡単です。
- 移動の含まれる(Transform.positionやrotationが変化する)Animationを作成する。
- Animationを選択してGenerate Root Motion Curveボタンを押す。
- AnimatorのApply Root Motionにチェックを入れる。
これで、その場を基準にアニメーションを行うアニメーションが出来ます。
Root Motionの機能
Root Motionは割と面白い機能です。
例えばオブジェクトの上下だけでなく前進部分も設定してやることで、アニメーションでオブジェクトの移動量を調整することが出来ます。つまり初期位置に戻らないアニメーションの場合は移動します。
例えば「ジャンプ時はグっと移動して、でも着地時(ペタンコになってるタイミング)は移動しない」のようなアニメーションタイミング的に調整する挙動を手軽に作成できます。
なお、現在Write Defaultsがバグっていて動作しないっぽいので、オブジェクトを非アクティブに設定すると初期位置が破綻し変な所からアニメーションをスタートしてしまいます。(その為、アニメーションを止めたければAnimatorとRendererをdisableにする措置がお勧めです)
それとRectTransformには使えなかったと思います。
Unity5への移行とApply Root Motion
Generate Root MotionしていないのにApply Root Motionにチェックが入っている場合、アニメーションはRoot座標を動かさずその場でアニメーションを行います。
Unity4はAnimatorを追加した場合だいたいApply Root Motionにチェックが入っていたので、Unity5へ移行した際に座標移動せずビクビク震えだしたら要確認です。
なお、Generate Root Motion後でApply Root Motionのチェックを外すと、アニメーションは今までどおり親オブジェクトをRootとして扱います。
*1:モーションを取り込んだ場合は普通に使えました