今日は前回の続きで、スケルタルアニメーションをやっていきます。今回やるのは独自のキャラクターを動かす方法についてです。
タナカさん登場
前回のキャラクターを動かそうと思いましたが自分が動かしても良い感じにならない(ハイクォリティなテクスチャーにはハイクォリティなアニメーションが必要)ので、自分が3分くらいで適当につくったキャラクターを使います。タナカさん(仮)です。
Paperというアプリで作りました。こういう時にタブレットがあると便利ですね
これを、前回と同じようなアプローチで動かせるようにします。
ボーンをつけて、ジオメトリを生成、ウェイトを調整して完成です。一つ違う点があるとすれば、PSBのマルチスプライトワークフローではない場合は最初にスプライトを選択しないとボーンが作れません。
登録作業完了後はシーンに配置して、親オブジェクトにSprite Skin
コンポーネントを追加、Create Boneボタン
でボーンを自動生成します。これで一つのスプライトを変形させて色々なポーズを取らせる事が出来るようになります。
タナカさんをIKで動かせるようにする
アニメーションはFK(ボーンを回転させる)でも作れますが、幾つかのケースではIK(特定座標に到達するようにボーンを調整する)の方が楽です。なのでキャラクターの「頭~腰」と「手」「足」でIKをセットアップします。
最初にIK Manager 2D
をルートのGameObjectに設定します。
「+」ボタンで、使用するIKの数(頭、右足、左足、右手、左手)だけ要素を作成します。
作成する種類は、手足はLimb、頭はChain(CCD)で作成しました。
作成したSolverで、BoneのEffectorとTargetを関連付けます。Effectorはボーンの最終到達点、TargetはEffectorが目指す先です。
SolverはEffectorの位置がTargetに到達するように、ボーンの位置を調整します。ボーンの最終的な向き(例えば足や剣の向き)はEffectorのTransformの向きが影響します。
実際にIKをセットアップします。やってることは簡単で、Lamb Solver 2D
やCCDSolver2D
のEffectorにボーン末端のGameObjectをセットしているだけです。手や足首といった物があればソレになります。下の例では腕までしかボーンが無いので、GameObjectを追加してソレを割り当てています。
CCDSolverの場合は、影響を受けるボーンの数(Chain Length)もココで指定します。
この作業を頭手足、全てに適応すればIKのセットアップは一通り完了です。
アニメーションにする
最後に作ったキャラクターをアニメーションにして使えるようにします。
この時、2つの選択肢があります。IK「で」アニメーションさせるか、編集に「のみ」IKを使うか…の話です。
IKでアニメーションする場合、基本的に腕や足といったパーツをIKで動かす事になります。これは多分2D Animationで想定された使い方で、作るのは楽だし、段差などの微調整が必要な部分を解決してくれます。ただし計算コストがかかります。また腕が変な方向にフリップしたりします。こちらで作る場合は、Targetの位置やEffectorの向きをアニメーションで調整すれば良いです。
もう一つはIKは編集に使うだけで、基本的にはAnimatorで操作するといった場合です。今回はIKは編集用と割り切った方法をやってみます。コチラの場合は、各ボーンに動きを登録し、最終的にはIK Manager2D
系は全て外す事になります(もしくはウェイト0で運用)
最初にやることは、各SolverのTargetをルートオブジェクトの子から外す事です。AnimationClipを編集する際、動かすと自動的にクリップに登録されるのを避ける為、親子関係は外しておきます。もし最終的なキャラクタから完全にIKを省く場合(Animation Clipだけでボーンを動かす場合)は、Solverも外しても良いです。
次にアニメーションクリップを編集していきます。編集する前にはAnimation Windowのロックボタンを押しておきます。でないとウィンドウのフォーカスがちょくちょく外れる事になります。
さて、基本的なポーズ作りはTargetを動かしてIKを調整するのが楽で良いです。ただしTargetでボーンを動かしてもAnimationClipに位置が保存されません。なので、下のようなフローでキャプチャーしていきます。
- Targetを動かして、IKベースでポーズを作る
- 動かしたボーンを選択して、InspectorのTransformで「Add Key」
- 1~2を繰り返してアニメーションを作成
IK Manager 2D
のWeightを0にして、実際のアニメーションの動きを確認
この形でスプライトのアニメーションを作れば、作成後はIK関連のコンポーネント…IK Manager 2D
やSolver各種
を破棄してもアニメーションしてくれます。
感想
ということで、タナカ氏を無事動かすことが出来ました。
良い感じに…となると練習とセンスを鍛える必要がありそうですが、ちょっと動かすというモチベーションなら、結構楽に出来るんじゃないかなという感じです。
関連
チュートリアル動画(2D Animation V1)
前回の記事