無限クリップからアニメーションクリップへの変換
アニメーションのオーバーライドトラックとアバターマスクの使用

ヒューマノイドアニメーションの作成

ここでは、タイムラインインスタンスを使用して外部モーションクリップでヒューマノイドキャラクターをアニメーション化する方法を説明します。このワークフローでは、クリップのギャップをマッチする方法、手動でクリップのギャップを調整する方法、クリップ間をブレンドしてジャンプや抜け落ちを最小限に抑える方法も示しています。ここではヒューマノイドキャラクターが使用されていますが、このアニメーションメソッドはどのゲームオブジェクトでも使用できます。

このワークフローでは、ヒューマノイドにバインドされた空のアニメーショントラックを持つタイムラインインスタンスを既に作成していることを前提としています。

例えば、Guard ヒューマノイドは空のアニメーショントラックにバインドされています
例えば、Guard ヒューマノイドは空のアニメーショントラックにバインドされています

プロジェクトから、モーションクリップをアニメーショントラックにドラッグして新しいアニメーションクリップを作成します。例えば、最初のクリップとして、アイドル状態 (Idle) をドラッグして、何もしていない状態からヒューマノイドを開始します。アイドルのクリップを適切な位置に配置し、サイズを変更します。

Guard ヒューマノイドにバインドされた、アイドル状態 (Idle) のアニメーションクリップを持つアニメーショントラック
Guard ヒューマノイドにバインドされた、アイドル状態 (Idle) のアニメーションクリップを持つアニメーショントラック

2 番目のモーションクリップを加えます。この例では、走って左に曲がるクリップ (Run_Left) をアニメーショントラックにドラッグします。 Run_Left クリップのサイズを適宜変更します。この例では、Run_Left クリップのサイズを変えてループを 1 つ加えています。そのため、Guard が走ってから 180 度方向転換できます。

Idle クリップと Run_Left クリップを含むアニメーショントラック
Idle クリップと Run_Left クリップを含むアニメーショントラック

タイムラインインスタンスを再生します。ヒューマノイドの Guard キャラクターは、各アニメーションクリップ間をジャンプします。これは、最初のアニメーションクリップ (Idle) の終了時のヒューマノイドキャラクターの位置が、次のアニメーションクリップ (Run_Left) の開始位置と一致しないために発生します。

ヒューマノイドは、フレーム 29 (赤い矢印と枠) で終了する最初のアニメーションクリップと、フレーム 30 (緑の矢印のついたゴーストと枠) で始まる 2 番目のアニメーションクリップの間をジャンプします
ヒューマノイドは、フレーム 29 (赤い矢印と枠) で終了する最初のアニメーションクリップと、フレーム 30 (緑の矢印のついたゴーストと枠) で始まる 2 番目のアニメーションクリップの間をジャンプします

クリップ間のジャンプを修正するには、各アニメーションクリップのギャップをマッチします。Timeline エディターウィンドウには、ギャップをマッチするためのいくつかの異なる方法あります。 この例では、2 番目のアニメーションクリップが前のクリップとマッチしています。これを行うには、Run_Left クリップを選択し、右クリックし、Match Offsets to Previous Clip を選択します。

選択したアニメーションクリップのギャップをその前のアニメーションクリップにマッチするには、Match Offsets to Previous Clips を右クリックします。
選択したアニメーションクリップのギャップをその前のアニメーションクリップにマッチするには、Match Offsets to Previous Clips を右クリックします。
ギャップをマッチした後、最初のアニメーションクリップ (フレーム 29、赤い矢印) は 2 番目のアニメーションクリップ (フレーム 30、緑の矢印のゴースト) の開始時のヒューマノイドの位置と回転に一致します。
ギャップをマッチした後、最初のアニメーションクリップ (フレーム 29、赤い矢印) は 2 番目のアニメーションクリップ (フレーム 30、緑の矢印のゴースト) の開始時のヒューマノイドの位置と回転に一致します。

タイムラインインスタンスをもう一度再生します。ヒューマノイドの位置と回転は一致しますが、ヒューマノイドが違う姿勢であるため 2 つのアニメーションクリップの間にまだジャンプがあります。最初のアニメーションクリップの終わりに、ヒューマノイドは足を揃えて直立しています。2 番目のアニメーションクリップの開始時では、ヒューマノイドは足を開いて前方にかがんでいます。

ブレンドを作成して、2 つの姿勢ののジャンプを削除し遷移させます。クリップのサイズ、ブレンドエリア、クリップイン、各ブレンドカーブの形を調整して、2 つの姿勢の間に遷移を作成します。例えば、Idle クリップと Run_Left クリップの間の遷移では、Idle クリップは長さ 36 に変更され、Run_Left クリップはフレーム 25 で開始するように再配置されます。残りのプロパティーはデフォルト値のままです。

最初の 2 クリップ間にブレンドを作成し 2 つのアニメーションが滑らかに遷移するようにします
最初の 2 クリップ間にブレンドを作成し 2 つのアニメーションが滑らかに遷移するようにします

Idle クリップから Run_Left クリップに遷移するときに、ブレンドによって姿勢の間にある目立つジャンプが削除され、ほとんどのボディーパーツの遷移が自然になりました。ただし、異なる足の位置をブレンドしたため、結果的に不自然に足がスライドします。

足のスライドを修正するには、アニメーションクリップのルートのギャップを手動で調整して、足の位置があまり変化しないようにして、スライドを減らします。 ルートのずれを手動で調整するには、Timeline エディターウィンドウでアニメーションクリップを選択します。Inspector ウィンドウで、Animation Playable Asset を展開し、Clip Root Motion Offsets を展開します。

アニメーションクリップを選択します。アニメーションクリップのプレイアブルアセットププロパティーを表示するには、Inspector ウィンドウの Animation Playable Asset (より詳細なプロパティー) を広げ、Clip Root Motion Offsets を開きます。
アニメーションクリップを選択します。アニメーションクリップのプレイアブルアセットププロパティーを表示するには、Inspector ウィンドウの Animation Playable Asset (より詳細なプロパティー) を広げ、Clip Root Motion Offsets を開きます。

Clip Root Motion Offsets の Position と Rotation は 0 ではありません。なぜなら Match Offsets to Previous Clip を行うことによって、これらの値が前のアニメーションクリップの終了時のヒューマノイドのルート (ヒップ) に一致するように、すでに設定されているからです。

Clip Root Motion Offsets で、移動ツールをクリックします。すると、アニメーションクリップのルートの、移動ギズモがシーンビューに表示されます。以下の方法のうち 1 つを使用して、アニメーションクリップのルートの位置のギャップを手動で調整します。

  • シーンビューで移動ギズモをドラッグします。

  • Inspector ウィンドウで、Position プロパティーを適切な値に変更します。

移動ツール (Inspector ウィンドウの青い矢印) をクリックして、アニメーションクリップのルート時点の、シーンビューに移動ギズモ (赤い矢印) を表示します。移動ギズモを使用して、選択したアニメーションクリップのルートの位置のギャップを手動で調整します。
移動ツール (Inspector ウィンドウの青い矢印) をクリックして、アニメーションクリップのルート時点の、シーンビューに移動ギズモ (赤い矢印) を表示します。移動ギズモを使用して、選択したアニメーションクリップのルートの位置のギャップを手動で調整します。

無限クリップからアニメーションクリップへの変換
アニメーションのオーバーライドトラックとアバターマスクの使用