【Unity】Final IK を使用してアニメーションを作る
初めに
今回は技術的な記事です。
現在制作中のゲーム(以下CG_Lab)では、アニメーションにFinalIKを使用しています。
(Unity標準のリグは使用していません)
https://assetstore.unity.com/packages/tools/animation/final-ik-14290?locale=ja-JP
IKをアニメーションに使用する利点
- 「手を特定の場所に固定する」などが容易
- 拘束されているアニメーションなどで便利です
- 「何かを掴む」なども容易
- ある程度、人体として自然な動きをさせられる
- ただのアニメーションで作ろうとするととんでもない時間と手間がかかりそうです
- アニメーションの微調整がしやすい
- 追従先の位置が変わっても追従してくれるので、手間が減ります
こんな感じ
IKをアニメーションに使う
以下4つを用意して使用しています。
- FinalIKの設定
- IKTarget
- IK追従対象
- FollowTransform(対象に追従するプログラム)
アニメーションから、以下の方法でキャラを動かしています。
- IKTargetをIK追従対象に追従させる
- IKTargetを直接動かす
IK対象をIKTargetに追従させる
主に、他のキャラとか物に追従させたい場合に使っています。
手を合わせたり
IK対象を直接動かす
単純にアニメーションさせたい場合に使います。
腰を動かしたり
現状の課題
- 普通(Humanoid)のアニメーションが再生できない
- Humanoidアニメーションを使用したい場合は、別アニメーターを使用する形で対処しています
- IKのフォロー先をプログラムから登録できるようにしたい
- これができるようになると、プログラム上でアニメーション差し替えが現実的になる
- キャラの体型が違う場合でもアニメーションを共通化したい
- フォロー周りを上手く使えばいい感じにできるかも?
あとがき
探してもこれといった記事が見つからなかったので、自分で書いてみました。
時々、技術的な記事も出していきたいですね。
おまけ
おまけとして、追従に使用しているプログラムを置いておきます。自由にお使いください。
インスペクタ上から相対座標を設定しておくと、相対的な位置関係を保ったまま追従します。
再生していない状態でも動くようになっています。
(Odinを使用していますが、無くても動きます)
FollowTransform.cs (2.71kB)
ダウンロード