Anima2d 〜恐竜の足を動かすまで編。【Unity】

今回は、2DボーンアニメやIKなどがunity上で作成・設定できるというAnima2dの記事です。

今回は初回なので、Anima2dに付いてる TRex という恐竜サンプルの足を動かすまでを目指します。

f:id:snoopopo:20180301103541g:plain

この記事での環境

  • Unity 2017.3.0f3 Personal(64bit)
  • Unity Anima2D version 1.1.4 (この記事執筆時点で最新)

assetstore.unity.com

導入

Asset Storeから anima2dとかで検索すると出てくるのでimportしておきましょう。

Assetsフォルダの下がこんな感じになると思います。

f:id:snoopopo:20180226143739p:plain

スプライト(またはスプライトアトラス)からSpriteMeshを作る

スプライトアトラス(SpriteModeがMultiple)の場合はあらかじめ、画像の分割設定をSprite Editorでしておきましょう。

スプライト、またはスプライトアトラス(今回の例でいくとt_rex_parts)を選択した状態で、

(Hierarchyで:右クリック)Create -> Anima2D -> SpriteMesh

を選択すると、スプライト単位でSpriteMeshが作られます。

f:id:snoopopo:20180226144339p:plain

(SpriteMeshesというフォルダはわかりやすい為に適当に作っただけ)

ちなみに、unity2017系から登場した Sprite Atlas*1からはSpriteMeshを生成することは現時点ではできませんでした。なので、スプライトのMultipleを使うことになると思います。

SpriteMeshを設定したゲームオブジェクトを作る

SpriteRenderをアタッチしたゲームオブジェクトを作り、それを今作ったSpriteMeshに変換する手順でSpriteMeshをアタッチしたゲームオブジェクトを作ります。

(Hierarchyで:右クリック)Create -> 2D Object -> Sprite

SpriteRenderコンポーネントがアタッチされたゲームオブジェクトが作成されます。

今回は、足だけしか作らないので、t_rex_legという画像をSpriteRenderコンポーネントで設定しました。

f:id:snoopopo:20180226145203p:plain

次にHierarchyにある今作ったSpriteをアタッチしたゲームオブジェクトを選択した状態で

(Hierarchyで:右クリック)Create -> 2D Object -> SpriteMesh

を選択すると、Inspectorの表示が↓のように

SpriteRenderからSprite Mesh Instanceに勝手に変換されているのを確認してください!

f:id:snoopopo:20180226145447p:plain

ボーン(骨)を設定する

次にボーンを作成します。

(Hierarchyで:右クリック)Create -> 2D Object -> Bone

SpriteMeshコンポーネントが付いているゲームオブジェクトの子オブジェクトとして設定しました。

今回は、太もも・ふくらはぎ・あし・指?用に4つ用意しました。

f:id:snoopopo:20180226150154p:plain

このように子ゲームオブジェクトとして作成しておくと、InspectorのBone#Childも自動設定されます。

f:id:snoopopo:20180226150634p:plain

ボーンの位置を合わせる

ボーンは画像からはみ出ないように調整する必要があります。

f:id:snoopopo:20180226150819p:plain

↑で回転方向を調整したり、

f:id:snoopopo:20180226150939p:plain

↑で骨の大きさを調整したりして…

f:id:snoopopo:20180226151132p:plain

こんな感じに調整しましょう。

最後に、SpriteMeshコンポーネントにBoneを設定します。

Set Bonesに一番親のボーン(例だとUpper Leg R)をアタッチします。

するとBonesリストに一覧が表示されます。

f:id:snoopopo:20180226152049p:plain

SpriteMesh EditorでBindする

Window -> Anima2D -> SpriteMesh Editor

SpriteMesh Editor を開きます。

このウィンドウを開いたままHierarchy上で先ほど作成したSpriteMeshがアタッチされたゲームオブジェクトを選択します。

f:id:snoopopo:20180226152253p:plain

Bindが押せるようになっているのでBindを押すと、↓のような表示に変わります。

f:id:snoopopo:20180226152315p:plain

必要に応じてWeight Toolで重量の設定もできます。

f:id:snoopopo:20180301110603p:plain

ここまで設定したら忘れずにApplyを押して保存しましょう。

IK CCD を設定する

アニメーションをしやすくする為にIKを設定します。

今回は指に対して設定したいので、

指のボーン(この例だとFingers R)を選択した状態で、

(Hierarchyで:右クリック)Create -> 2D Object -> IK CCD

f:id:snoopopo:20180226152948p:plain

こんな感じで丸が表示されます。

この状態でIKをつけたゲームオブジェクトの Transform#Position を変えると、 足が動くのがエディタ上でもすぐ確認できます!

アニメーションを設定する

上記までの手順で、IKがアタッチされたゲームオブジェクトを調整すれば なんとなくアニメーションできそうだとわかったと思います。

今回はこれをアニメーションクリップで設定していきます。

SpriteMeshをアタッチしたオブジェクトを選択した状態で、

Window -> Animation

でアニメーションウィンドウを開きます。

AddPropertyからIKがアタッチされたゲームオブジェクトのポジションを変えるアニメを作ります。

f:id:snoopopo:20180301103731p:plain

(このあたりは適当に調節してくれ)

実行すると↓のように動くようになりました。

f:id:snoopopo:20180301103541g:plain