2D Toolkitを使用して、Spine 2DアニメーションをUnity 3Dにインポートし、エフェクトをボーンにスナップします

ここでは、SpineアニメーションのUnityプロジェクトへのインポートを単純化する方法、および任意のオブジェクト(視覚効果、コライダーなど)をアニメーション自体または個々のボーンにバインドするために必要なことを説明します。



Unityエディターで使用可能なパーティクルシステムの例を見てみましょう。

記事の最後に、既製のアニメーションとテストプロジェクトが添付されています。その結果は次のようになります。



画像



したがって、計画を実施するために必要なものは次のとおりです。



  1. Unityエディターの無料バージョン(執筆時点でv 4.5.3f3)。
  2. 2D Toolkit (執筆時点でv 2.4.0)。
  3. 脊椎アニメーションエディタ。
  4. Csharpライブラリ。 ここからダウンロードできます (ただし、添付プロジェクトに既に存在します)。


Spineエディターから手動でアニメーションをインポートする方法は、簡単なビデオの説明で説明されていますが、プロジェクトで複数の人が作業している場合、いくつかの問題が発生する可能性があります。 したがって、Spineエディターからアニメーションエクスポートフォルダーをドラッグし、[OK]をクリックするだけで十分なウィンドウがインポート用に作成されました。



アニメーションの作成プロセスについてはここでは説明しません。開発者のサイトには、このテーマに関する優れたドキュメントがあります。



エクスポートから始めましょう



各Spineプロジェクトは、実際には使用済み画像とプロジェクト設定ファイル(* .spineファイル)を含むフォルダーです。 これに加えて、エクスポート中にエディターによって生成されたJSONファイルも必要です。 エクスポート設定は次の図に示されています。 ここで重要なのは、エクスポート時にアトラスが不要であることを示すことを忘れないことです([アトラスの作成]フィールド)。 次に、パスとして「[プロジェクトのSpineフォルダーへのパス] /エクスポート」を指定し、エクスポートボタンをクリックします。



画像



その結果、Spineプロジェクトフォルダーには既に存在するものと必要なJSONファイルが含まれています。 ソースが完成したエクスポートフォルダーは、この記事の最後にある「necr_2.zip」アーカイブにあります。

何らかの理由でアニメーションのソースがフォルダーと一緒に転送するのが望ましくない場合、これは重要ではありません。ファイル「* .spine」はインポートに必要ありません。



Unityで新しい2Dプロジェクトを作成し、「2D Toolkit」パッケージと「spine_test.unitypackage」ファイルの内容をインポートします。これは、この記事の最後でダウンロードすることもできます。

結果のプロジェクトでは、完成したシーンを開いて実行できます。これは「ExampleEffects」フォルダーにあります。 このシーンでは、アニメーション化されたゴーストがカメラの前を飛び、手の骨の1つにエフェクトが付加されています(呼び出し可能な場合)。



しかし、アニメーションのインポートに戻ります。

Unityプロジェクトでインポートウィンドウを開くには、下図に示すように、トップメニューで[ウィンドウ]項目を見つけ、ドロップダウンリストで[スパインインポートウィンドウ]を選択する必要があります。



画像



その結果、同様のウィンドウが表示されます。



画像



ここで、「necr_2.zip」ファイルが必要です。このファイルには、Spineプロジェクトからのアニメーションのエクスポートが含まれています。 それを解凍し、結果のフォルダーを大きなフィールド「>>フォルダーエクスポートキャラクターをここにドラッグします。<<」。 その結果、次の図のように、生成されたアトラスといくつかの設定が表示されます。



画像



[Pack method]フィールドで、最適なオプションを選択します。 Atlasのサイズが小さい方。 「パディング」フィールドは、アトラス内のテクスチャ間のギャップを定義します。値は1で、アーティファクトは発生しませんでした。 「最大アトラスサイズ」はデバッグ用にのみ存在し、そこには常に最大値が必要です。 また、「最大テクスチャサイズ」はUnityのテクスチャ品質を設定します。最大値も推奨されます。

上のフィールド「Set person name」も重要です。 インポートされたすべてのアニメーションは1つの場所に保存されるため、名前は一意である必要があります。そうでない場合、ウィンドウの下部に「OK」ボタンの代わりに警告が表示されます。 このボタンをクリックすると、アニメーションのインポートが完了します。

ところで、小さなアドインを備えたMaxRectsBinPackスクリプトを使用して、アトラスを作成しました。



必要なプレハブを作成およびリンクするプロセスで、Unityコンソールにいくつかのエラーメッセージが表示される場合がありますが、最終的な結果には影響しません。 その結果、インポート時に指定された名前のフォルダーに、リソースと「アニメーション」というプレハブが含まれます。



画像



それをステージに引き出し、「再生」を押して、アニメーション化されたゴーストを観察します。 ただし、アニメーションを自動的にオンにするには、下の画像に示すコンポーネントに同様の設定を忘れずに設定してください(「Time Scale」はわかりやすくするために縮小されています)。



画像



オブジェクトをボーンにバインドしたままにします



テストでは、フォルダー「ExampleEffects」のプレハブ「fx1_pref」および「fx2_pref」を使用できます。 次の図に示すように、オブジェクトインスペクターで「Spine Person」コンポーネントを見つけて設定を設定します。



画像



「Prefab」フィールドでは、「GameObject」タイプのオブジェクトが選択されています。 ほとんどすべてのゲームオブジェクト、この場合はParticle systemを含むコンテナです

しかし、ここでの主な分野は「アニメーション」です。 「シンプル」オプションは、ボーンにアタッチされていない通常の埋め込みオブジェクトを意味します。 「withbone」値を選択することにより、リストからオブジェクトをアタッチするボーンを選択できます。 幽霊の場合、骨の名前はあまりオリジナルではないので、実験することができます。

「Free Z pos」フィールドは、一部のエフェクトでは照明の2次元のアナログが使用され、常にインターフェイスとゲームフィールドの間になければならないという事実のために登場しました。 したがって、このボックスをオフにすると、エフェクトのz座標は常にfixed_zパラメーター(インスペクターに表示されます)と等しくなります。

「ピボット」、「回転」、「スケール」フィールドを使用して、ボーンに対するエフェクトの位置、回転、サイズを調整できます(この場合、スケーリングは重要ではありません)。

設定が完了したら、シーンを開始し、オブジェクトを異なる座標でドラッグして結果を確認できます。



このすべてが何をもたらすかは、このビデオで実証されています。

プロジェクトリリースムービー






SpinePerson.csスクリプトには、他にも便利な機能がいくつかあります。



SpinePerson.setSpineImageActive

SpinePerson.replaceSpineImage



これらの機能を使用すると、アニメーションの特定のテクスチャを非表示/表示または置換できます。

すべてのスクリプトは「SpineImport / scripts」フォルダーにありますが、必要に応じて、特定のプロジェクトのニーズに合わせて変更することは難しくありません。



添付のUnityプロジェクトとアニメーションアーカイブは次のとおりです。

-spine_test.unitypackage [更新、スケール係数の修正と回転] ;

-necr_2.zip



All Articles