本章では、Unityに「Spine」で出力されたデータを導入するまでの流れについて共有します。
背景
スマートフォンゲームの代表作品
昨今スマートフォンゲーム市場では、リッチな2Dアニメーションや3Dモデルを利用したゲームが増えてきました。代表として、以下に示すようなタイトルがあります。
- パズル&ドラゴンズ
- モンスターストライク
- 白猫
これらの特徴として、画面をポチポチと押して遊ぶゲームではなく、指の様々な動きを利用して遊ぶゲームという特徴を備えています。そのため、ゲームの表現方法が多種多様となり、ゲームのコンセプト・シナリオ・操作性・マルチプレイといった観点で、ゲームに求められるクオリティが上がっています。
そこで、コンテンツのクオリティを高める観点から、SpineやMayaで作られたコンテンツを使う機会が多くなってきました。
なぜSpineか
2Dアニメーションは、3Dモデルと比較した際に、制作段階で概念を理解しやすく、制作費や時間といったコストを抑えて作成できるといった特徴があります。2Dアニメーションを実現するためのソフトウェアとして、以下のソフトウェアがあります。
- Spine
- Sprite Studio
- Sprite Builder
- Flash
- After Effect
筆者は、その中でも、Spineが一際有利だと考えています。Spineをゲームに導入する観点から見た利点は以下の通りです。
- 2Dアニメーションに必要な機能の充実度
- Skin
- MESH
- FFD
- Event
- Exportできるデータ種類の豊富さ
- 公式で更新頻度高くアップデートされるライブラリの充実度
これらの機能は、2Dアニメーションを品質高く、効率よく制作するための環境としたコンセプトのもと作られたことが背景にあります。
※Spineは元々Kickstarter発祥です。
Spine by Esoteric Software — Kickstarter
Spineの公式サイトは、以下より確認できます。ja.esotericsoftware.com
筆者は、これから2Dアニメーションの技術へのニーズがもっと高まり、Spineを使う技術者が更に増えると考えています。
以上の理由により本章では、SpineをUnityへ導入する方法について解説します。
SpineからUnityへの制作過程
ライブラリのインポート
まず、Spineの公式よりUnityで利用できるようにライブラリをインポートします。github.com
ここで必要なライブラリは、以下の2種類です。
- spine-unity
- spine-csharp
これらを以下の図のように、Unityのプロジェクトに配置します。
SpineデータのExport
Unity向けにデータを出力します。データを出力する際に、注意点が一点あります。以下の図のように、出力形式を「.atlas.txt」と、「txt」形式に変更することです。
UnityでSpineデータをImport
UnityにSpineデータをインポートさせます。インポートすると、「.asset」ファイルが生成されます。以下の図のように、「.asset」ファイルを右クリック→「Spine」を選択すると、「Spine」データのインスタンスのオブジェクト化方法について選択肢が現れます。
以下それぞれ役割が異なります。
- Instantiate (SkeltonAnimation)
- Instantiate (Mecanim)
インスタンス化の違いについて、簡潔に説明します。
- SkeltonAnimationは、Spineで作成されたアニメーションを簡単に再生する際に利用します
- Mecanimは、Spineで作成されたアニメーションをディゾルブなど、複雑に合成して再生する際に利用します
これらを選択すると、以下図のように、Hierarchy上にオブジェクトが生成されます。
※なお上図に2つオブジェクトがあるのは、上記それぞれでインスタンス化したためです。名前も変更しています。
アニメーションの再生
アニメーションの再生方法について、以下図のようにSkeltonAnimationを例として説明します。
SpineデータのオブジェクトのInspectorの中にある、「Skelton Animation」で「Animation」の項目を変更すると該当の再生できます。ループさせる場合は、「Loop」の項目にチェックを入れます。またSpine側で複数のSkinを作成していた場合は、「Initial Skin」の項目を変更することで別のキャラクタに変更できます。