Unity Anima2D使ってみた
こんにちは、最近犬にぶつかられた中村です。
今回は日本ゲーム大賞アマチュア部門向けに制作をしている時にすごくお世話になったAssetの一つ、Unity Anima2Dについて紹介したいと思います。
Unity Anima2Dとは
Unity Anima2Dとは、2Dスケルタルアニメーション(ボーンアニメーション)を作るためのアセットです。つまり、これを使えばUnity上で画像にボーンをあてて、そのボーンに従って画像を動かすことができるようになります。
利点
では、UnityAnima2Dの良さはなんなのかと言いますと、まずテクスチャサイズの合計を小さくできるところです。今までのUnity2DのアニメーションはSpriteを複数用意して、そのSpriteを切り替えて表示することで表現していました。
しかし、UnityAnima2Dを使えば、腕や足の画像を用意してボーンをあてて動かすことで走ったり、ジャンプする動作を表現することができます。
これによって、後から新しい動作を付けたくなったとき、今までのアニメーションでは新しくSpriteを用意しないといけなかったのが、ボーンを動かすことで表現できるようになりました。
それに、Spriteを切り替えて表示するわけではないので、より動きがなめらかに動くようにもなりました。
機能
Unity Anima2Dには以下の機能が備わっています。
2D Bone
スプライトをメッシュへ
Sprite Mesh Editor
自動ウェイト
IK (Inverse Kinematics)
ポーズの保存と読み込み
Unityのアトラスと互換
ボーンにアニメーションをベイク
オニオンスキン
アバターマスクの作成
実践
実践
それでは実際に、キャラクターを動かしながらUnity Anima2Dの使い方を説明していきたいと思います。
まずは、AssetStoreからUnity Anima2DをImportします。
Importできたら使いたい画像を用意します。ここではUnity Anima2Dのデモにあるティラノサウルスの画像を使ってやっていきます。
画像を入れたら、Texture TypeをSprite(2D and UI)、SpriteModeをMultipleに変更して、Applyします。
そしたら、Inspector上からSpriteEditorを開いてSliceを押しTypeをAutomaticにしてからSliceしてApplyします。
Spriteを分割できましたら、Spriteからメッシュを作ります。やり方はProjectの中から対象の画像を選択した状態で、右クリック > Create > Anima2D > SpriteMeshをクリックします。
そうするとメッシュが作れます。
次は、メッシュにボーンをあてていきましょう。
Projectから先ほど作ったメッシュをドラッグし、Sceneビューにドロップします。
そしたら、Hierarcyから今配置したものを選択し、右クリック > 2Dobject > Boneをクリックします。これで、ボーンを作れますので、あとはボーンの位置と長さを調整してください。位置は最初のボーンはその画像の中で最も動かないところ、中心(今回の足で言うと太ももあたり、体で言えば腰のあたりなど)に配置してください。長さはInspectorの2DBoneの中にあるLengthから調整できます。
Scene上でボーンをあてましたら、次はメッシュを分割していきます。
分割はSpriteMeshEditorで行います。SpriteMeshEditorを開くには、Projectの中のメッシュを選択して、Inspector上のEdit Sprite Meshをクリックしてください。
SpriteMeshEditorを開けましたら、SpriteMeshEditウィンドウのSliceを選択して、枠をSpriteの大きさに合わせて調整し、Applyをクリックするとメッシュを分割できます。
このとき、Tessellationの値を大きくするとより細かく分割されます。
頂点を手動で調整したいときは、SliceToolを閉じてからマウスで操作できます。
移動‥‥頂点を選択してドラッグ 削除‥‥選択してDeleteキー 追加 輪郭内‥‥ダブルクリック 輪郭上‥‥Shift + クリック 次はウェイトを付けていきましょう。
まずは、Hierarchyから先ほどボーンをあてたメッシュを選択し、Inspector上に表示されたSprite Mesh InstanceのSet bonesの中に、一番上にあるボーンを入れます。そうすると、SpriteMeshEditor上にもボーンが表示されました。(表示されない人は左上の「ボーンと目」が描かれたマークのチェックが外れいるかもしれません。)
ボーンが表示されましたら、SpriteMeshEditウィンドウのBindをクリックしてください。そうしますと、Weight toolが右下に表示されます。
Overlay‥‥パーツにかかってい重さを色で表示する Pies‥‥頂点ごとの重さを円グラフで表示する Auto‥‥自動で重さを振り分ける
Autoで重さを自動で振り分けましたら、Applyをクリックしてください。
これで、Meshがボーンに合わせて動くようになりました。
このままでは、動かすときにボーンを一つ一つ動かさないといけなくなるのでIKをつけていきます。IKには2種類あってIK Limb 2DとIK CCD 2Dがあります。IK Limb 2Dは腕や足といった四肢に使われ、IK CCD 2Dは尻尾など四肢以外のところに使われます。
Create > 2D Object > IK LimbでIKを作ります。そうしたら、IKの位置をBoneの向かせたい位置に配置してください。そうしたら、IK Limb 2D(Script)のTargetに対象にしているボーンを入れます。このとき関節の曲がる方向を変えたい時はFlipのチェックボックスをクリックしてください。
これで、ボーンを動かしやすくなりました。では最後に、Pose機能について説明したいと思います。
Unity Anima2Dには現在のボーンの向きなどの情報を保存し、読み込む機能があります。
使い方は、一番親の階層にPoseManagerスクリプトをアタッチして、Create new poseを押すと名前を付けてPosesの中に登録できます。そして、Boneを動かしてSaveを押すとそのボーンの状態を保存できます。読み込みたいときはLoadを押すことで保存したポーズを読み込むことができます。
今回は以上で終わりたいと思います。ありがとうございました。

















