筆者はゲーム開発を学習中の身であり、この記事の内容は個人の実装・調査に基づくものです。必ずしも最適・最善の方法とは限らず、誤りを含む可能性があります。実装の際は公式ドキュメントや一次情報も併せてご確認ください。
誤りやより良い方法にお気づきの際は、コメントでご指摘いただけますと幸いです。
※ Unreal Engine 5.6 で確認しています。他バージョンでは CR_Mannequin_FootIK の構成が異なる可能性があります。
はじめに
UE5のサンプルキャラ(Manny)のFoot IK(CR_Mannequin_FootIK)をそのまま使うと、坂道を歩いたときにキャラが上下に細かく揺れます。段差や平地では問題ありません。
【修正前】
完成イメージ
まず完成イメージです。通常の段差ではすこしゆっくりキャラクターの高さが変わるものの、坂道での上下のカクつきは抑えられています。
【修正後】
原因
このControl Rigでは、左右の足のZオフセットのうち低い方が、そのまま骨盤(pelvis)のオフセットに代入されています(Step 3)。足のオフセットには補間がかかっていますが、骨盤には補間がありません。
坂道では歩行周期に合わせて「低い方の足」が左右交互に入れ替わるため、骨盤のオフセットが歩くたびに振動し、これがカクつきになります。
修正: 骨盤にも補間を追加する
If と Set ZOffset_Pelvis の間に Alpha Interpolate を追加し、Interp Result にチェックを入れます。まずは足側と同じ設定(Interp Speed どちらも15.0)をそのまま使用しました。
値の調整
15.0のままでは補間が速すぎて、坂道の揺れは十分収まりませんでした。かといって両方の値を小さくすると、坂は滑らかになる一方で、通常の段差で骨盤の反応がもっさりし、ゆっくりとキャラ全体の高さが上下することになります。
そこで2つの値の役割を分けて調整しました。
- Interp Speed Decreasing: 骨盤が下がるときの速度
- Interp Speed Increasing: 骨盤が元の高さへ戻るときの速度
どちらの値も、大きくすると反応が機敏になる代わりに坂道の揺れが残り、小さくすると坂道は滑らかになる代わりに段差での骨盤の動きが遅れます。この2つを方向ごとに別々に調整して、妥協できる値を探します。
最終的に、私は Increasing 8.0 / Decreasing 12.0 に落ち着きました。あくまで一例として、好みに合わせて調整してください。
【修正後】
まとめ
- サンプルFoot IKの坂道カクつきの原因は、骨盤のオフセットに補間がないこと
-
Set ZOffset_Pelvisの前にAlpha Interpolateを追加するだけで直せる - Decreasing / Increasing を別の値にすると、段差の反応と坂道の滑らかさを両立できるように調整する

