IK は、手先や足先の位置を決めると、腕や脚の曲がり方を Spine が自動で計算する仕組みです。
歩くアニメーションで足が床にめり込まないようにするときなどに使います。
- 作り方:ボーンを1本か2本(親と子)選び、プロパティの「New…」→「IK Constraint」→ ターゲットをクリック
- 1本IK はボーンがターゲットの方を向き、2本IK は先端がターゲットに届くように2本が曲がる
- 3本以上のボーンを1つの IK で動かすことはできない
- 曲がる向きは「Positive」、FK との混ぜ具合は「Mix」で決める
2026年10月3日、現行の公式ガイドとspine-runtimes 4.3のソースを照合しました。
Unity・Spineエディタでの操作再現は含まず、画面の英語名と版ごとの差を分けて説明します。
ここで紹介する機能は Spine Professional だけで使え、Spine Essential では使えません。
Spine のエディタでの再現は含まず、画面の名前は英語版の表記です。
IKコンストレイントを作る
- 曲げたいボーンを1本、または親と子の2本を選ぶ
- ツリーのプロパティで「New…」→「IK Constraint」を選ぶ
- ターゲットにするボーンをクリックする
何もないところをクリックすると、そのボーンの先端にターゲットのボーンが作られ、作ったときにボーンが動かないようになっています。
ターゲットは、IK で動かすボーンの子や孫にはできません。
あとからターゲットを変えるときは、プロパティの Target の鉛筆のアイコンを使います。
1本IKと2本IK
| 1本IK | 2本IK | |
|---|---|---|
| 動き | ボーンがターゲットの方を向く | 親と子が回転して、子の先端をターゲットに届かせる |
| 使いどころ | 目線・頭の向き・武器の向き | 腕・脚 |
| 使える設定 | Mix・Compress・Stretch | Mix・Softness・Stretch・Positive |
3本以上のボーンを1つの IK で動かすことは、曲がり方が1つに決まらないため、できません。
設定
| 設定 | 働き |
|---|---|
| Mix | ふつうの回転(FK)と IK の回転を0〜100%で混ぜる |
| Positive | 2本IKで、子が正の向き(反時計回り)に曲がる |
| Softness | 2本IKだけ。伸び切る直前の動きをゆっくりにする |
| Compress | 1本IKだけ。ターゲットが近いとボーンを縮める |
| Stretch | ターゲットが遠いとボーンを伸ばす |
| Uniform | 縮めたり伸ばしたりするときに、縦横を同じ比率にする |
Mix を0と100の間にすると、ターゲットを動かしたときに曲がる向きが急に反転することがあると、公式ガイドに書かれています。
親のボーンに縦横で違う拡大(非一様スケール)があると、Stretch は効きません。
4.3での変更
4.3 のベータの変更履歴には、Uniform を置きかえる IK の scaleY と volume の設定を加えたと書かれています。
ランタイムでも、IkConstraintData.Uniform が ScaleY(none・uniform・volume)に変わりました。
4.3 のエディタで項目の名前がどう表示されるかは、ユーザーガイドでは確かめられませんでした。
足を地面に固定する
公式ガイドは、IK の使い道として、歩くときに足が床にめり込まないようにすることを挙げています。
考え方は、太ももとすねの2本に2本IKを付け、ターゲットのボーンを床の位置に置いてキーを打つ、というものです。
ターゲットを動かさず、2本のボーンが届く範囲で体を動かすと、足先の位置を保つ用途に使えます。届く範囲や後段のコンストレイントも確認します。
足先のボーンの親子の組み方など、細かい手順は公式ガイドには書かれていません。
コンストレイントの順序
コンストレイントは、ツリーに並んだ順に上から計算されます。
後のコンストレイントが同じボーンを計算し直すと、前のコンストレイントの効果が消えるので、順序を合わせる必要があります。
- 作ったときは、Spine が適当な位置に入れる
- セットアップモードで、上下にドラッグして順序を変えられる
- 「Reset」で、全体の順序を自動で並べ直せる
Spine の基本は、Spineの使い方で紹介しています。
2本IKの届く範囲を確認する練習
元の.spineを複製し、親の長さ60・子の長さ40の2本を一直線に置きます。
親の始点を(0, 0)とし、ターゲットはIKで動かすボーンの子孫に入れず、独立したボーンとして作ります。
非一様スケールのない練習状態から始めます。
Mixを100%、Stretchをオフ、Softnessを0にして、ターゲットを(60, 20)へ置きます。
次に(120, 0)へ動かし、足先が届く場合と総延長100を超える場合を比較します。
単位はこの練習用スケルトン内の値です。
Stretchを使わない2本の長さの合計を超える距離では、ターゲットへ届く保証はありません。
ターゲットを固定しても、体の移動で届く範囲を外れた場合は足先の位置が保たれるとは限りません。
| 練習条件 | 期待する結果 | 切り分け |
|---|---|---|
| 届く位置で足先を確認 | ターゲットと足先を比較 | Positiveを切り替えて曲がる側も見る |
| 総延長を超える位置 | Stretchオフでは届かない | ターゲット・体位置・長さを確認 |
| Stretchが効かない | 2本IKのSoftnessと親のスケール | Softness>0と非一様スケールを分ける |
| 後で足先がずれる | 後段コンストレイントの影響 | 同じボーンを扱う順序を比較 |
足の固定とFKへ戻す確認
届く範囲でターゲットを固定し、体を少し上下させて足先を比較します。
Mixを0%へ戻すとFKの回転が使われるため、元の回転キーと位置も確認します。
最後はターゲット、Mix、Positive、Stretch、Softnessとコンストレイントの順序を開始前へ戻します。
2本IKではSoftnessが0より大きいとStretchが適用されず、親の非一様スケールでも制限があります。
4.3のscaleY/volumeの名前と従来ガイドのUniformは、使っている版の表示に合わせて区別します。
練習ファイルと確認済みの範囲
2本のC#例は参照・名前・待ち時間の異常系をローカルのテストダブルで検査し、4.3のAPI宣言を一次資料で照合しました。
実際のSpine/Unityコンパイル・描画・スキン・書き出し・変形は未検証です。
コードは4.3用です。
練習の完了は、それぞれ本文の表示・再生・復元を実環境で確認して判断します。
まとめ
- ボーンを選んで「New…」→「IK Constraint」→ ターゲットをクリック
- 1本IK は向きを合わせ、2本IK は腕や脚を曲げる。3本以上は不可
- 曲がる向きは Positive、FK との混ぜ具合は Mix
- コンストレイントは上から順に計算される
参考:Esoteric Software「IK constraints」「Constraints」、変更履歴(2026年9月29日に確認)。
