【Unity】アニメーションルートモーションのシンプルなサンプル

Unityのアニメーターコントローラーでの「Root Motion」は、アニメーションがキャラクターの位置や向きを制御するかどうかを決定する機能です。Root Motionを使用すると、アニメーションデータ内に含まれる移動や回転情報がキャラクターの実際の移動に直接適用されます。これにより、特に歩行や走行などのアニメーションにおいて、よりリアルな動きを実現することができます。

Root Motionの有効化

  1. アニメーターコンポーネント:
    • キャラクターにアタッチされているアニメーターコンポーネントで「Apply Root Motion」のチェックボックスをオンにします。これにより、アニメーターがアニメーションクリップのRoot Motionデータを使用してキャラクターの位置と回転を制御します。
  2. アニメーションクリップ:
    • アニメーションクリップ自体にもRoot Motionを適用するための設定が必要です。UnityエディターのAnimationウィンドウで、アニメーションクリップを選択し、「Root Transform Position (XZ)」や「Root Transform Rotation」のプロパティを適切に設定します。

利点と欠点

利点:

  • アニメーションと物理的な動きが同期し、より自然な動きが実現されます。
  • 複雑な動きでも、アニメーターが正確に位置を制御できるため、プログラミングの負担が軽減されます。

欠点:

  • Root Motionを使うと、アニメーションが完全に動きをコントロールするため、スクリプトや物理エンジンによる動きの制御が難しくなることがあります。
  • マルチプレイヤーゲームなど、ネットワーク環境下での同期が複雑になることがあります。

使用例

たとえば、キャラクターが階段を上るアニメーションを作成する場合、Root Motionを有効にするとアニメーション自体がキャラクターを階段の各段に合わせて正確に移動させることができます。これにより、階段の段ごとの位置をプログラムで細かく調整する手間を省くことができます。

Root Motionは特にリアルタイムで物理的に正確な動きを必要とするシナリオで非常に有効ですが、プロジェクトのニーズに応じて適切に使用するか判断することが重要です。

サンプルでは、Cubeを1つシーンに配置し、Moveアニメーションを追加しています
アニメーションはアニメータコントローラで生業しています

アニメーションは、transform.Positionを時間に沿って変化(x座標を等速に更新)させるようにしています

Apply Root Motionを有効

Apply Root Motionを無効

Unity

Posted by hidepon