今回は、2DボーンアニメやIKなどがunity上で作成・設定できるというAnima2dの記事です。
今回は初回なので、Anima2dに付いてる TRex という恐竜サンプルの足を動かすまでを目指します。
- 導入
- スプライト(またはスプライトアトラス)からSpriteMeshを作る
- SpriteMeshを設定したゲームオブジェクトを作る
- ボーン(骨)を設定する
- ボーンの位置を合わせる
- SpriteMesh EditorでBindする
- IK CCD を設定する
- アニメーションを設定する
この記事での環境
- Unity 2017.3.0f3 Personal(64bit)
- Unity Anima2D version 1.1.4 (この記事執筆時点で最新)
導入
Asset Storeから anima2d
とかで検索すると出てくるのでimportしておきましょう。
Assetsフォルダの下がこんな感じになると思います。
スプライト(またはスプライトアトラス)からSpriteMeshを作る
スプライトアトラス(SpriteModeがMultiple)の場合はあらかじめ、画像の分割設定をSprite Editorでしておきましょう。
スプライト、またはスプライトアトラス(今回の例でいくとt_rex_parts
)を選択した状態で、
(Hierarchyで:右クリック)Create -> Anima2D -> SpriteMesh
を選択すると、スプライト単位でSpriteMeshが作られます。
(SpriteMeshesというフォルダはわかりやすい為に適当に作っただけ)
ちなみに、unity2017系から登場した Sprite Atlas*1からはSpriteMeshを生成することは現時点ではできませんでした。なので、スプライトのMultipleを使うことになると思います。
SpriteMeshを設定したゲームオブジェクトを作る
SpriteRender
をアタッチしたゲームオブジェクトを作り、それを今作ったSpriteMesh
に変換する手順でSpriteMeshをアタッチしたゲームオブジェクトを作ります。
(Hierarchyで:右クリック)Create -> 2D Object -> Sprite
でSpriteRender
コンポーネントがアタッチされたゲームオブジェクトが作成されます。
今回は、足だけしか作らないので、t_rex_legという画像をSpriteRender
コンポーネントで設定しました。
次にHierarchyにある今作ったSpriteをアタッチしたゲームオブジェクトを選択した状態で、
(Hierarchyで:右クリック)Create -> 2D Object -> SpriteMesh
を選択すると、Inspectorの表示が↓のように
SpriteRender
からSprite Mesh Instance
に勝手に変換されているのを確認してください!
ボーン(骨)を設定する
次にボーンを作成します。
(Hierarchyで:右クリック)Create -> 2D Object -> Bone
SpriteMesh
コンポーネントが付いているゲームオブジェクトの子オブジェクトとして設定しました。
今回は、太もも・ふくらはぎ・あし・指?用に4つ用意しました。
このように子ゲームオブジェクトとして作成しておくと、InspectorのBone#Child
も自動設定されます。
ボーンの位置を合わせる
ボーンは画像からはみ出ないように調整する必要があります。
↑で回転方向を調整したり、
↑で骨の大きさを調整したりして…
こんな感じに調整しましょう。
最後に、SpriteMesh
コンポーネントにBoneを設定します。
Set Bones
に一番親のボーン(例だとUpper Leg R)をアタッチします。
するとBonesリストに一覧が表示されます。
SpriteMesh EditorでBindする
Window -> Anima2D -> SpriteMesh Editor
で SpriteMesh Editor
を開きます。
このウィンドウを開いたままHierarchy上で先ほど作成したSpriteMeshがアタッチされたゲームオブジェクトを選択します。
Bindが押せるようになっているのでBindを押すと、↓のような表示に変わります。
必要に応じてWeight Tool
で重量の設定もできます。
ここまで設定したら忘れずにApplyを押して保存しましょう。
IK CCD を設定する
アニメーションをしやすくする為にIKを設定します。
今回は指に対して設定したいので、
指のボーン(この例だとFingers R)を選択した状態で、
(Hierarchyで:右クリック)Create -> 2D Object -> IK CCD
こんな感じで丸が表示されます。
この状態でIKをつけたゲームオブジェクトの Transform#Position
を変えると、
足が動くのがエディタ上でもすぐ確認できます!
アニメーションを設定する
上記までの手順で、IKがアタッチされたゲームオブジェクトを調整すれば なんとなくアニメーションできそうだとわかったと思います。
今回はこれをアニメーションクリップで設定していきます。
SpriteMeshをアタッチしたオブジェクトを選択した状態で、
Window -> Animation
でアニメーションウィンドウを開きます。
AddPropertyからIKがアタッチされたゲームオブジェクトのポジションを変えるアニメを作ります。
(このあたりは適当に調節してくれ)
実行すると↓のように動くようになりました。