キャラを走らせて、キーを離す。そこで足を一歩踏み出して止まると、それだけで体重のある動きに見えます。走っている途中で反対を向けば、今度は踏ん張って切り返してほしくなります。
こうした「動きのつなぎ目」を作る方法のひとつが Motion Matching(モーションマッチング) です。用意したアニメーションの中から、そのときの体の姿勢や進む方向に合う部分を探して再生します。
まずはEpic公式の Game Animation Sample(GASP) を動かしてみましょう。この記事では、足の運びを観察してから仕組みを読み解き、最後に自分のキャラへ動きを渡す方法を紹介します。
この記事でわかること
- Game Animation Sampleを動かして違いを体感する手順
- PoseとTrajectoryという2つの手がかり
- Motion Matchingがどうやって次の動きを選ぶのか
- State Machineとの使い分け
対象バージョン:本文の操作例と固有アセット名は、UE5.6向けGASPを基準にしています。2026年8月には5.8版も公開され、一部のキャラやアニメーション構成が更新されました。別の版を使う場合は、その版のサンプ ル内説明も参照してください。
まずサンプルを動かしてみよう
GASPは、移動アニメーションの仕組みを学べる無料のサンプルプロジェクトです。500以上のアニメーションと、それらを使って歩く・走る・跳ぶキャラが入っています。
- Fabで、提供元が「Epic Games」の「Game Animation Sample」を開き、ライブラリへ追加します。
- Epic Games Launcherの「Unreal Engine」→「ライブラリ」でサンプルを探し、「Create Project」で新しいプロジェクトを作ります。対応するUEの版と保存先を確認してください。
- 作成したプロジェクトを開き、読み込みやシェーダーの準備が終わるのを待ちます。
- 「DefaultLevel」を開いて「Play」を押し、ゲーム画面をクリックします。別 のマップが開いていたら、コンテンツブラウザで「DefaultLevel」を検索してください。
容量は配布版によって変わるため、ダウンロード時の表示を確認しましょう。Fabからの入手操作は、アセットの取り込み記事 でも説明しています。

UE5.6向けサンプルでは、W / A / S / D で移動、マウスでカメラを操作できます。左Ctrl は歩きと走りの切り替えです。マップ内の「View Controls」でも操作を確認できます。
まず、元のキャラが歩いたり走ったりすれば成功です。 この状態を基準にしておくと、後で設定を変えて動かなくなったときも、原因を絞りやすくなります。
足元を見ると、違いがわかる
最初から障害物を飛び越えなくても、平らな場所で次の3つを試すだけで見どころがわかります。
| 試すこと | 注目するところ |
|---|---|
| 止まった状態から進む | 最初の一歩をどう踏み出すか |
| 走ってからキーを離す | 足をどこへ着いて止まるか |
| 走行中に進行方向を大きく変える | そのまま回るか、足を踏ん張って切り返すか |

速くて見づらければ、マップ内の「Game Animation Widget」と書かれた床のパネルへ進んで、調整用のウィジェットを開きます。「Timescale」を1より小さくしてみましょう。Timescaleは時間の進む速さで、1が通常です。スローにすると、足が着く順番を追いやすくなります。
続いて「Draw」の「Trajectory」を有効にしてみましょう。キャラの周りに移動の軌跡が表示されます。進行方向を変えたりキーを離したりして、線の向きや長さと、キャラの動きを見比べてください。観察が終わったらTimescaleを1へ戻します。
この Trajectory(トラジェクトリ) は、移動の道筋を表す情報です。特にこれから先の部分は、入力や速度を手がかりに予測した進路です。次の節で、なぜ動き選びに使うのかを見ていきましょう。
Motion Matchingは何を手がかりに選ぶ?
右へ曲がりたいとき、右折のアニメーションを選べばよさそうに思えます。でも、左足を着いた直後なのか、右足を振り出している途中なのかで、自然につながる再生箇所は変わります。
そこで使うのが Pose(ポーズ)、つまり「ある瞬間の体の姿勢」です。足や腰などの位置に加えて、どちらへ動いているかも手がかりになります。先ほどのTrajectoryと合わせると、選びたい動きを次のように表せます。
「今の足の運びからつながりやすく、これから右へ曲がる動きはどれだろう?」
Motion Matchingは、この 条件に合う箇所を、候補のアニメーションから探します。「右折の動画を必ず最初から再生する」という決め方ではなく、動画の途中にある、つながりやすい箇所も選べるのがポイントです。

選んだ動きへは ブレンド、つまり姿勢を混ぜながら切り替えます。今の再生を続ける場合もあり、常に別の動画へ飛び移るわけではありません。検索の間隔も設定できるため、「必ず毎フレーム探し直す」と覚える必要はありません。
また、止まる動作の素材がなければ、検索だけで見事な急停止を作れるわけではありません。どの動きを選べるようにしておくかが、見た目を左右します。 GASPは、そうした素材と動かす仕組みをまとめて試せるのが助かるところです。
なお、サンプルの最終的な見た目には、足の接地や体の傾きなどの補正も加わっています。見えた工夫のすべてをMotion Matchingだけの効果と考えず、「素材を選ぶ仕組み」と「選んだ動きを整える仕組み」が組み合わさっていると捉えましょう。
サンプルの中身を少しだけのぞく
動きを選ぶ仕組みを、図で整理してみます。ここでは新しいシステムを組まず、完成しているものを開いて確認します。

| 名前 | 役割 |
|---|---|
| Pose Search Database | 検索の候補にするアニメーションを登録する場所 |
| Pose Search Schema | 足の位置や進路など、何を比べて選ぶかの設定 |
| Chooser | 「歩きたい」「空中にいる」などの条件で、検索する候補の組を絞る仕組み |
| Motion Matchingノード | 絞った候補と検索条件を使い、再生する動きを選ぶ担当 |
たとえば、歩きたいのに走る動作ばかり選ばれては困ります。まずChooserで歩行用の候補へ絞り、その中からMotion Matchingでつながりのよい箇所を選ぶ、と考えると役割が分かれます。
登録されている動きを見る
コンテンツブラウザで、次のフォルダを開きます。
Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/Databases
中の Pose Search Database をひとつ開き、「Asset List」からアニメーションを選んでプレビューします。ここに並んでいるのが、動きを探すときの候補です。歩き続ける素材だけでなく、動き出しや停止を含むものも見てみてくださ い。
候補を選ぶ担当を見る
Content/Blueprints の「ABP_SandboxCharacter」を開き、「AnimGraph」で「Motion Matching」ノードを探します。Animation Blueprint(AnimBP) は、キャラの姿勢を組み立てる設計図です。
ノードの更新処理「Update_MotionMatching」の横にある虫眼鏡から関数を開くと、「Evaluate Chooser」を使って候補を選ぶ処理をたどれます。関連する「CHT_PoseSearchDatabases」は、先ほどの「MotionMatchingData」フォルダにあります。
最初は全ノードを解読しなくても大丈夫です。「素材が入る場所」と「そこから選ぶ担当」を見つけられれば、ひとまず十分です。 設定を変えるのは、何がどの役割なのかが見えてからにしましょう。
自分のキャラへ動きを渡す
仕組みが見えてきたら、自分のキャラでも試したくなります。ここでは応用として、元のキャラが計算した姿勢を、実行中に自キャラへ渡す方法を紹介します。これを ランタイムリターゲット と呼びます。
骨格の異なるキャラへ動きを移すために使うのが IK Retargeter です。「元の腕の動きは、自キャラのどの腕へ渡すか」といった対応を持ちます。先に リターゲットの記事 を参考に、サンプルの「UEFN_Mannequin」から自キャラへのIK Retargeterを作り、プレビューで動くことを確認してください。
この節は、そのIK Retargeterができた状態から進めます。以降の図では「RTG_UEFN_to_MyCharacter」と呼びます。自キャラ用の小さなAnimBPを作り、ここへIK Retargeterを指定する構成です。

1. 自キャラ用のAnimBPを作る
コンテンツブラウザの「追加」→「Animation」→「Animation Blueprint」で、自キャラの Skeleton(骨格アセット) を指定して作成し、「ABP_MyRetarget」と名付けます。開いたAnimGraphで右クリックし、「Retarget Pose From Mesh」を追加して「Output Pose」へつなぎます。
Retarget Pose From Mesh → Output Pose
「Retarget Pose From Mesh」は、別のメッシュの姿勢をリターゲットして受け取るノードです。ノードを選び、「Use Attached Parent」を有効にし、「IKRetargeter Asset」へ準備したIK Retargeterを指定します。
Use Attached Parentは、親としてつながっているメッシュを動きの送り元にする設定です。次の手順で、この親子関係を作ります。AnimBPは「Compile」して保存してください。

2. 元のメッシュの子として、自キャラを追加する
- サンプルの操作キャラ「CBP_SandboxCharacter」を右クリックし、「Create Child Blueprint Class」から子Blueprintを作って「CBP_MyCharacter」と名付けます。子Blueprintは、元の移動処理を引き継いで見た目などを追加できる設計図です。
- 開いたBlueprintの「Components」で、元の「Mesh(CharacterMesh0)」を選び、「Add」からSkeletal Meshコンポーネントを追加します。名前は「MyMesh」とします。Meshの子になっていなければ、MyMeshを元のMeshへドラッグして親子関係を作ります。
- 「MyMesh」へ自キャラのSkeletal Meshを指定します。「Animation Mode」を「Use Animation Blueprint」、「Anim Class」を「ABP_MyRetarget」にします。
- MyMeshの相対Transform、つまり親から見た位置・回転・大きさを調整します。まず位置と回転を0、大きさを1にして、元のメッシュと足元や向きが重なるか確認します。モデルにずれがある場合は、見えるままにして調整してください。
- 元のMeshだけ「Visible」をオフにし、「Visibility Based Anim Tick Option」を「Always Tick Pose and Refresh Bones」にします。MyMeshは表示したままにします。

元のMeshは、見えなくなっても動きの送り元として働き続けます。最後の設定は「表示していなくても、姿勢と骨の位置を更新する」という意味です。元のアニメーション設定を消したり、元のメッシュそのものを交換したりしないでください。
3. サンプルの切り替えボタンに登録する
「CBP_MyCharacter」をCompile・保存したら、Content/Widgets の「Game Animation Widget」を開きます。「Designer」で既 存のキャラ選択用ボタンを複製し、詳細の「Object」へ「CBP_MyCharacter」を指定して保存します。

Playして、ウィジェットの「Character Override」から追加したキャラを選びます。最初に試した「進む・止まる・方向を変える」を繰り返し、自キャラが動き、元のキャラが表示されていなければ成功です。足の位置や姿勢が崩れる場合は、まずIK Retargeterのプレビューへ戻って確認しましょう。
サンプル全体を自分のゲームへ取り込む場合は、入力・カメラ・キャラの移動処理との組み合わせも必要です。今回の差し替えは、サンプルの中で自キャラを動かすところまでです。
State Machineとはどう使い分ける?
どちらを使うかは、キャラがリアルかデフォルメかだけでは決まりません。必要な動きの種類と、その素材をどのように選びたいかで考えてみましょう。
State Machine は「待機」「移動」などの状態と、切り替わる条件を組む仕組みです。Blend Space は、速度などの値 に応じて歩きと走りなどを混ぜます。基本の組み方は AnimBPの記事 で紹介しています。
| 作りたいもの | 考え方の例 |
|---|---|
| 待機・歩行・走行の切り替えを自分で把握しながら作りたい | State MachineとBlend Spaceから始める |
| 発進・停止・切り返しの素材があり、その場に合う箇所を選びたい | Motion Matchingを試す |
| 移動中でも決まった攻撃を再生したい | 移動の仕組みにMontageを組み合わせる |
State Machineでも、素材と遷移を整えれば滑らかな動きを作れます。Motion Matchingは、その動き選びを検索で行う選択肢です。GASPの新しい版にも、State MachineやBlend Spaceと組み合わせた構成があります。

移動が動いた後にアクションを足すなら、Animation Montageの記事 へ進めます。Montageは、攻撃などを必要なタイミングで再生するための仕組みです。移動と攻撃の姿勢をどう混ぜるかは、AnimBP側でも整えていきます。
うまくいかないときに見るところ
| 症状 | 最初に確認すること |
|---|---|
| 本文と同じアセット名が見つからない | UEとGASPの版。5.6向けの名前を別の版で探していないか |
| キーを押しても動かない | Play中のゲーム画面をクリックしたか。サンプル内のView Controlsはどうなっているか |
| 自キャラがTポーズのまま | MyMeshのAnim Class、AnimBPのCompile、親が元のMeshか、IK Retargeterの指定 |
| 元のメッシュを隠すと動かなくなる | 元のMeshの「Always Tick Pose and Refresh Bones」 |
| 足や腕の向きが崩れる | IK Retargeterの送り元・受け先、骨の対応、基準姿勢 |
| 自キャラを選んでも元のキャラのまま | 切り替えボタンのObjectがCBP_MyCharacterか。Widgetを保存したか |
自キャラでつまずいたときは、元のキャラへ戻して同じ操作を試しましょう。元のキャラも動かなければサンプルの操作や設定、自キャラだけ崩れるならリターゲット周辺、と確認する範囲を分けられます。
おまけ:先に知っておくと良いこと
- まずサンプル単体で動かす: Game Animation SampleはThird Personとは仕組みが違います。いきなり自分のプロジェクトへ丸ごと移すと、参照やプラグイン不足で詰まりやすくなります
- 1つのノードを置き換えるだけでは動かない: Pose Search系の設定、Animation Blueprint、Database、そして移動用のアニメーション群が必要です。State Machineの一部を差し替える感覚では入りません
- 持ち込むときはスケルトンから: 自分のキャラへ移すなら、スケルトンの互換性、リターゲット設定、キャラの向き、原点の位置、カプセルとの整合を確かめます。ここがずれると「滑る」「足が沈む」「向きが変」という形で現れます
- State Machineをやめる必要はない: 動きの種類が少ないゲームなら、従来の作り方のほうが調整しやすいこともあります
まとめ
Motion Matchingは、今の姿勢や予測した進路を手がかりに、用意したアニメーションから合う再生箇所を探す仕組みです。GASPを動かしながら「ここで足を踏ん張っている」「この一歩で向きが変わった」と観察すると、何を選ぶための仕組みなのかが見えてきます。
まずは元のキャラで、進む・止まる・曲がるを試す。その後で素材の入る場所と選ぶ担当を見つけ、自分のキャラへ動きを渡す。この順で進めると、大きなサンプルでも一つずつ確かめながら使えるようになります。