ライセンスについて

Spineランタイムをアプリケーションに組み込むにはSpineライセンスが必要です。

spine-unityランタイム ドキュメント

ユーティリティーコンポーネント

SkeletonRootMotion

spine-unityは、3つのSpineスケルトンコンポーネントすべてでルートモーションをサポートしています。SkeletonRootMotion コンポーネントは、SkeletonAnimationSkeletonGraphic (UI)のGameObjectsにアタッチすることができ、SkeletonMecanimには別のSkeletonMecanimRootMotionコンポーネントが用意されています。このルートモーションコンポーネントをアタッチすることは、UnityのMecanim Animatorコンポーネントの Apply Root Motion パラメーターを有効にするのと同じように動作します。有効にすると、選択された Root Motion Bone の動きに応じて、キャラクターの位置がアニメーションで駆動されます。

注意: SkeletonMecanimオブジェクトにはSkeletonMecanimRootMotionコンポーネントが用意されています。SkeletonRootMotionSkeletonAnimationSkeletonGraphic (UI)コンポーネントで使用すると失敗します。

パラメーター

  • Root Motion Bone : ルートモーションとして使用される対象のボーンを設定します。
  • X : 有効にすると、ローカルのX軸に沿った動きがルートモーションとして適用されます。
  • Y : 有効にすると、ローカルのY軸に沿った動きがルートモーションとして適用されます。
  • Root Motion Scale (X) : 水平方向のルートモーションデルタに適用されるスケール。例えば、ジャンプを必要な距離に伸ばすためのデルタ補正に使用できます。
  • Root Motion Scale (Y) : 垂直方向のルートモーションデルタに適用されるスケール。例えば、ジャンプを任意の高さに伸ばすためのデルタ補正に使用できます。
  • Animation Tracks : ルートモーションの計算にどのアニメーショントラックを含めるかを指定できます。

任意のパラメーター

  • Rigidbody2D : Rigidbody2D が割り当てられると、Transform コンポーネントではなく Rigidbody2D によって与えられる物理演算が動きに適用されます。そのため、SkeletonAnimationコンポーネントのAdvanced - Animation Update Inspectorパラメーターを、In FixedUpdate に設定することをお勧めします。
  • Rigidbody : Rigidbody が割り当てられると、Transform コンポーネントではなく Rigidbody によって与えられる物理演算が動きに適用されます。そのため、SkeletonAnimationコンポーネントのAdvanced - Animation Update Inspectorパラメーターを、In FixedUpdate に設定することをお勧めします。

補足: SkeletonRootMotionクラスはAdjustRootMotionToDistance()やその他のメソッドを提供し、簡単にデルタ補正を行うことができます。デルタ補正は、例えば、ジャンプを所定の距離に引き伸ばすために使用できます。skeletonRootMotion.AdjustRootMotionToDistance(targetPosition - transform.position, trackIndex);によって、アニメーションの開始時やフレームごとにルートモーションを調整することができます。

SkeletonMecanimRootMotion

これはSkeletonMecanimコンポーネントで使用できる、SkeletonRootMotionコンポーネントの派生コンポーネントです。

SkeletonMecanimRootMotion コンポーネントは、UnityのMecanim AnimatorApply Root Motion パラメーターが有効になっていると、スケルトンのGameObjectに自動的に追加されます。そのため、SkeletonMecanimRootMotion コンポーネントを削除するには、まずAnimatorの Apply Root Motion パラメーターを無効にする必要があります。

パラメーター

  • Root Motion Bone : ルートモーションとして使用される対象のボーンを設定します。
  • X : 有効にすると、ローカルのX軸に沿った動きがルートモーションとして適用されます。
  • Y : 有効にすると、ローカルのY軸に沿った動きがルートモーションとして適用されます。
  • Root Motion Scale (X) : 水平方向のルートモーションデルタに適用されるスケール。例えば、ジャンプを必要な距離に伸ばすためのデルタ補正に使用できます。
  • Root Motion Scale (Y) :垂直方向のルートモーションデルタに適用されるスケール。例えば、ジャンプを任意の高さに伸ばすためのデルタ補正に使用できます。
  • Mecanim Layers : ルートモーションの計算にどのMecanimレイヤーを含めるかを指定できます。

任意のパラメーター

  • Rigidbody2D : Rigidbody2D が割り当てられると、Transform コンポーネントではなく Rigidbody2D によって与えられる物理演算が動きに適用されます。
  • Rigidbody : Rigidbody が割り当てられると、Transform コンポーネントではなく Rigidbody によって与えられる物理演算が動きに適用されます。

補足:  SkeletonMecanimRootMotion クラスはAdjustRootMotionToDistance() やその他のメソッドを提供し、簡単にデルタ補正ができるようにしています。デルタ補正は、例えば、ジャンプを所定の距離に引き伸ばすために使用できます。skeletonRootMotion.AdjustRootMotionToDistance(targetPosition - transform.position, trackIndex); によって、アニメーションの開始時やフレームごとにルートモーションを調整することができます。

BoneFollower

このコンポーネントはSkeletonAnimationコンポーネントのボーンを参照し、Update 毎に自身のトランスフォームをボーンのトランスフォームに設定します。

注意:  SkeletonGraphicオブジェクトにはBoneFollowerGraphicコンポーネントが用意されています。

SkeletonUtilityBoneコンポーネントとは対照的に、BoneFollower は親ボーンオブジェクトを持たない単一の独立したGameObjectとして使用できます。

これはパーティクルシステムなどのオブジェクトが、スケルトン上の特定のボーンを追いかけるようにするために使用できます。

BoneFollower コンポーネントの設定方法については、サンプルシーンSpine Examples/Getting Started/4 Object Oriented Sampleをご覧ください。

BoneFollowerGraphic

これはBone Followerコンポーネントの派生で、SkeletonGraphicコンポーネントと組み合わせて使用します。

SkeletonUtilityBoneコンポーネントとは対照的に、BoneFollowerGraphic は、親ボーンオブジェクトを持たない単一の独立したGameObjectとして使用できます。

これはパーティクルシステムなどのオブジェクトが、スケルトン上の特定のボーンを追いかけるようにするために使用できます。

BoneFollowerGraphic コンポーネントの設定方法については、サンプルシーンSpine Examples/Getting Started/6 Skeleton Graphicをご覧ください。

PointFollower

このコンポーネントはBone Followerコンポーネントと似ていますが、ボーンの代わりにポイント・アタッチメントに追従します。

SkeletonUtilityBoneコンポーネントとは対照的に、PointFollowerは、親ボーンオブジェクトを持たない単一の独立したGameObjectとして使用できます。

BoundingBoxFollower

このコンポーネントはスケルトンのスロットにある境界ボックスにマッチさせるために使用します。このコンポーネントは、形状を抽出して PolygonCollider2D に割り当てて、現在のアニメーションに合わせてフレームごとに有効または無効にします。

注意: ボーンの位置は自動的には追従しません。そのため、通常は BoneFollower コンポーネントと一緒に使用します。BoundingBoxFollower のInspectorの Add Bone Follower ボタンを使用して BoneFollower コンポーネントの作成と設定を行うことができます。

注意: 頂点変形アニメーション(境界ボックスの頂点をアニメーションで時間軸に従って移動させること)に対しては追従せず、初期形状のみを対象としています。

詳しくはBone Followerを参照してください。

SkeletonUtilityBone

物理演算やユーザーの入力に対応するために、実行時にプログラムでボーンの位置を変更したい場合があります。

SkeletonUtilityBoneコンポーネントは、GameObjectがボーンの位置に追従したり、手動でボーンの位置をオーバーライドしたり、2Dまたは3Dの物理演算を利用したりするための便利なインターフェースを提供します。ローカルのボーン位置に 追従する(Follow) か、Update 毎に オーバーライド(Override) するかを設定できます。Override に設定すると、SkeletonAnimationコンポーネントがワールドトランスフォームをアップデートする前に、コンポーネントがボーンの位置を設定します。

重要な注意事項: SkeletonUtilityBone は、ローカルのトランスフォーム値を使用します。これはスケルトンのボーン階層を反映した SkeletonUtilityBone GameObjectsの階層に依存しています。SkeletonUtilityBone の階層を素早く作成するには、後述SkeletonUtilityコンポーネントを使用することをお勧めします。

SkeletonUtilityBone のInspectorには、追加の子ボーンを作成したり(選択的または再帰的に)2Dおよび3Dのヒンジチェーンのヒンジチェーンを作成するためのインターフェースも用意されています。

SkeletonUtilityBones の階層ができあがると、Hierarchyパネルの SkeletonUtilityBone GameObjectの横には、以下のようにFollowに設定されているかOverrideに設定されているかで異なるアイコンが表示されます。

  • Follow に設定されている場合 :  Follow
  • Override に設定されている場合 :  Override

使用例

ユーザーがスケルトンのボーンをドラッグして移動させるようなユースケースでは、Override モードで SkeletonUtilityBone を使用します。

GameObjectが追従する必要があるのが1つのボーンだけの場合は、代わりにBoneFollowerコンポーネントを使うことで、リソースを節約することができます。

サンプルシーン

Spine Examples/Other Examples/SkeletonUtility Animated PhysicsSkeletonUtilityBone の使い方を示すサンプルシーンを確認できます。このシーンでは、一部の SkeletonUtilityBones ノードが Override ノードに必要な階層的な親となるために、ボーンの位置に対して Follow (追従)するように設定されています。

物理演算のための2Dおよび3Dヒンジチェーン

Hinge Chain Demo

キャラクターのマントや、重いオブジェクトを引きずる時、モーニングスターを振るなどで物理演算を追加したい場合があります。 spine-unityランタイムでは既存のSkeletonUtilityBone階層からHingeJointまたはHingeJoint2D要素の物理リグを生成することができます(詳しくはSkeletonUtilityBonesの階層の作成をご覧ください)。

Hinge Chain Setup

最初の SkeletonUtilityBone チェーン要素を選択し、Inspectorで Create 3D Hinge Chain または Create 2D Hinge Chain を選択して、物理リグを生成します。その際、選択した要素とその SkeletonUtilityBone の子要素すべてがヒンジチェーンになります。次に、RigidbodyのDrag(空気抵抗)とMass(質量)のパラメーターを調整して、結果を微調整します。Dragの値を上げると、Rigidbodyの動きが遅くなり、重さや空気との相互作用の効果が生まれます。

チェーンのルートノードは、スケルトンのボーンに親子付けされているのではなく、シーンの最上位階層に配置されていることに注意してください。これは運動量を適切に適用するためのUnityの要件です。チェーンルートをスケルトンのボーンに再び親子付けしないでください。そうしないと、チェーン要素がスケルトンの動きの影響を受けなくなってしまいます!

3Dヒンジチェーン

  1. まず通常通りSkeletonUtilityBone階層を作成してください。
  2. Sceneパネルで最初のチェーン要素を選択し、Inspectorで Create 3D Hinge Chain を選択して、3Dヒンジチェーンリグを作成します。 Create Hinge Chain 3D
  3. これにより、前の親(この例では cape-root )からチェーンGameObjectが削除され、新しい HingeChain Parent GameObjectがシーンの最上位に配置されます。前述のように、このGameObjectはスケルトンに対して再び親子付けしないでください! Hinge Chain 3D Hierarchy
  4. チェーン要素のRigidbodyのDrag(空気抵抗)とMass(質量)のパラメーターを調整して、結果を微調整してください。

スケルトンが反転すると、HingeChain Parent GameObjectは自動的に180度回転し、反転したボーンの位置に合わせてヒンジチェーンが調整されます。

2Dヒンジチェーン

  1. まず通常通りSkeletonUtilityBone階層を作成してください。
  2. Sceneパネルで最初のチェーン要素を選択し、Inspectorで Create 2D Hinge Chain を選択して、2Dヒンジチェーンリグを作成します。 Create Hinge Chain 2D
  3. これにより、前の親(この例では cape-root )からチェーンGameObjectが削除され、新しい HingeChain Parent GameObjectがシーンの最上位に配置されます。前述のように、このGameObjectはスケルトンに対して再び親子付けしないでください! Hinge Chain 2D Hierarchy
  4. チェーン要素のRigidbody2DのDrag(空気抵抗)とMass(質量)のパラメーターを調整して、結果を微調整してください。

このGameObjectには、Hinge ChainHinge Chain FlippedX という名前の2つの子オブジェクトが含まれていることに注意してください。スケルトンが反転すると、これらのGameObjectが自動的にアクティブになったり非アクティブになったりして切り替わり、それぞれのヒンジチェーンを有効にします。

SkeletonUtility

SkeletonUtilityBonesの階層の作成

SkeletonUtility コンポーネントは、スケルトンのボーン階層を反映したSkeletonUtilityBone GameObjectsの階層を素早く作成することができます。

SkeletonUtility コンポーネントを作成するには、SkeletonAnimationコンポーネントを選択し、Inspectorの Advanced セクションを展開して Add Skeleton Utility をクリックします。作成されると、Add Skeleton Utility ボタンが消え、GameObjectに SkeletonUtility コンポーネントが追加されます。

SkeletonUtility コンポーネントには、Spawn Hierarchy というボタンがあり、クリックすると以下のオプションが表示されます:

  1. Follow all bones は全てのボーンに対して SkeletonUtilityBone GameObjectsをその階層内に作成し、モードを Follow に設定します。
  2. Follow (Root Only) はルートの SkeletonUtilityBone GameObjectのみを作成し、モードを Follow に設定します。
  3. Override all bones は全てのボーンに対して SkeletonUtilityBone GameObjectsをその階層内に作成し、モードを Override に設定します。
  4. Override (Root Only) はルートの SkeletonUtilityBone GameObjectのみを作成し、モードを Override に設定します。

SkeletonUtilityBone は、必要に応じてスケルトンのボーン位置をオーバーライドするように設定できます。

注意: 後からでも SkeletonUtilityBone のInspectorを使って SkeletonUtilityBone GameObjectを追加することができるので、Spawn Hierarchy 機能はあくまで大まかな出発点となります。また、必要のないSkeletonUtilityBone GameObjectを削除して、リソースを節約した方が良いかもしれません。ただし、親はそのままにしておく必要があるので、階層の途中でGameObjectを削除したり、親を変更したりしないように注意してください。

SkeletonUtilityConstraint

C#

これはサブクラス「SkeletonUtilityConstraint」を派生させるための基底クラスです。これは自動的に親の SkeletonUtility で自分自身を登録し、それに応じてアップデートされます。

独自のコンストレイントクラスを作成する方法については、コンストレイントクラスの例 SkeletonUtilityGroundConstraint および SkeletonUtilityEyeConstraint を参照してください。

サンプルシーン

spine-unityランタイムには、上記のコンストレイントを紹介するサンプルシーン、Spine Examples/Other Examples/SkeletonUtility GroundConstraintSpine Examples/Other Examples/SkeletonUtility Eyes が付属しています。

SkeletonRendererCustomMaterials

特定のSkeletonインスタンスのマテリアルをオーバーライドしたい場合や、特定のスロットのみのマテリアルをオーバーライドしたい場合があります。このコンポーネントは、SkeletonAnimationSkeletonMecanimサブクラスを含むSkeletonRendererに、カスタムマテリアルのオーバーライドを割り当てるためのInspectorインターフェイスを提供します。

SkeletonRenderer (またはサブクラスのSkeletonAnimationSkeletonMecanim)を右クリックして Add Basic Serialized Custom Materials を選択すると、このコンポーネントをレンダラーに追加することができます。Custom Slot Materials 配列にエントリを追加して特定のスロットでマテリアルをオーバーライドしたり、Custom Material Overrides 配列にエントリを追加して、スケルトン全体のマテリアルを別のマテリアルに置き換えられます。それぞれのマテリアルのオーバーライドを有効にするには、Override Disabled のチェックを必ず外してください。

注意: このコンポーネントは、コードによる干渉を目的としていません。コードによってSkeletonRendererのマテリアルを動的に設定するには、マテリアル配列のオーバーライド用の SkeletonRenderer.CustomMaterialOverride と、スロットのマテリアルのオーバーライド用の SkeletonRenderer.CustomSlotMaterials に直接アクセスします。

SkeletonGraphicCustomMaterials

これはSkeletonGraphic用のSkeletonRendererCustomMaterialsの派生コンポーネントです。SkeletonGraphicのカスタムマテリアルやテクスチャのオーバーライドを割り当てるためのInspectorインターフェースを提供します。

SkeletonGraphicを右クリックして Add Basic Serialized Custom Materials を選択すると、このコンポーネントをGameObjectに追加することができます。Custom Texture Overrides 配列にエントリを追加すると、スケルトン全体のテクスチャを別のテクスチャに置き換えられます。Custom Material Overrides 配列にエントリを追加して、オリジナルのテクスチャ(置換前)で使用されているマテリアルを別のマテリアルに置き換えられます。それぞれのマテリアルのオーバーライドを有効にするには、Override Enabled のチェックを必ず外してください。

注意: このコンポーネントは、コードによる干渉を目的としていません。コードによってSkeletonGraphicのマテリアルを動的に設定するには、マテリアル配列のオーバーライド用の SkeletonGraphic.CustomMaterialOverride と、テクスチャのオーバーライド用の SkeletonGraphic.CustomTextureOverride に直接アクセスしてください。

SkeletonRenderSeparator

例えば、キャラクターが木にぶつかった時に、片足は幹よりも前に、もう片方の足は幹よりも後ろに表示するなど、キャラクターのパーツの間に他のGameObjectを表示したい場合があります。SkeletonRenderSeparator コンポーネントを使うと、SkeletonRenderer (またはサブクラスのSkeletonAnimationSkeletonMecanim)を2つ以上の SkeletonPartsRenderers に分割し、レイヤーの順番をカスタマイズすることができます。

注意: SkeletonGraphicコンポーネントは、SkeletonGraphic のInspectorの Advanced セクションで直接レンダリングを分離する機能を提供しているため、追加のコンポーネントを使う必要はありません。

注意: 通常、Spineのレンダラーコンポーネントは、スケルトンのメッシュ全体を表示するために1つのレンダラーを使用します。このため、残念ながら他のUnityEngine.Renderers (SpriteRendererMeshRendererParticleSystem など) をそのパーツの間に挿入することはできません。

設定

  1. まず対象のスケルトンのDraw Order(表示順序)を確認してください。スケルトンのレンダリングをパーツに分けるために使用するスロットを確認します。スケルトンをエクスポートする前に、このスロットに明確なラベルを付けておくと便利です。

  2. SkeletonRenderSeparatorコンポーネントの追加 Spine GameObjectを選択してください。次にInspector内のSkeletonAnimationまたはSkeletonRendererを右クリックして、Add Skeleton Render Separator を選択します。これで SkeletonRenderSeparator がGameObjectに追加されます。

"Steps 2 to 4"

  1. Separator Slotsの割り当て 追加した直後はInspectorに「セパレーターのリストが空だ」という旨の警告が表示されますので、Separator Slot Names で必要なスロットを選択して、セパレータースロットを設定してください。+ ボタンからセパレータースロットを追加することができます。

    注意:  このフィールドは、SkeletonRenderer (またはそのサブクラスのSkeletonAnimationSkeletonMecanim)コンポーネントでシリアル化され、SkeletonRenderSeparatorはそのためのインターフェースを提供するだけです。

  2. Parts Renderersの追加 Inspectorに「パーツレンダラーが足りない」という旨の警告が表示されているかと思いますので、Add the missing renderers (n) ボタンをクリックして、SkeletonPartsRenderer コンポーネントで必要なGameObjectを作成してください。これらのGameObjectは、上の Parts Renderers リストに自動的に割り当てられます。

    注意: SkeletonRenderSeparator は、現在の表示順序に応じて、必要なパーツレンダラーの数を検出します。しかし実行時に表示順序が変更されると、レンダラーがより多くのパーツレンダラーを必要とすることがあります。この場合、Add Parts Renderer ボタンをクリックして、1つまたは2つの追加パーツレンダラーを手動で追加する必要があります。

  3. Sorting LayerOrder in Layerの設定SkeletonPartsRenderers には、Inspectorに Sorting LayerOrder in Layer プロパティが用意されています。これで各 SkeletonPartsRenderer でソートのプロパティを設定することができます。値が大きいほどレンダラーが前面に移動します。

補足: SkeletonPartsRenderer GameObjectは、Spine GameObjectの子である必要はありません。SkeletonRenderSeparator は参照を保持しているので、必要に応じて整理してください。

サンプルシーン

SkeletonPartsRendererSkeletonRenderSeparator の使用方法を紹介しているサンプルシーンは Spine Examples/Other Examples/SkeletonRenderSeparator にあります。

C#

有効化と無効化

デフォルトでは、SkeletonRenderSeparatorSkeletonRendererを無効にして、メッシュのレンダリングタスクを引き継ぎます。同様に、SkeletonRenderSeparator を無効にすると、SkeletonRendererが再びレンダリングを引き継ぎます。

SkeletonRenderSeparator は、任意のコンポーネントとして有効または無効にすることができます:

C#
skeletonRenderSeparator.enabled = true; // 分離を有効化
skeletonRenderSeparator.enabled = false; // 分離を無効化

分離基準の変更

分離の基準は SkeletonRenderSeparator では保持していません。 SkeletonRenderer (またはサブクラスのSkeletonAnimationSkeletonMecanim)のセパレータースロットによって定義されます。実行時にセパレータースロットを操作したい場合は、リスト SkeletonRenderer.separatorSlots にアクセスして、通常通り AddRemoveClear で操作できます。

C#
Spine.Slot mySlot = skeletonAnimation.Skeleton.FindSlot("MY SPECIAL SLOT");
skeletonAnimation.separatorSlots.Clear();
skeletonAnimation.separatorSlots.Add(mySlot);

実行時にSkeletonRenderSeparatorを追加する

新しい SkeletonRenderSeparator コンポーネントを追加して初期化するには、staticメソッド SkeletonRenderSeparator.AddToSkeletonRenderer を使用します。

C#
SkeletonAnimation skeletonAnimation = GetComponent<SkeletonAnimation>();
skeletonAnimation.SeparatorSlots.Add(mySlot); // 上記参照

// SkeletonRenderSeparatorを追加
SkeletonRenderSeparator skeletonRenderSeparator = SkeletonRenderSeparator.AddToSkeletonRenderer(skeletonAnimation);

デフォルトでは、現在必要な SkeletonPartsRenderers が追加されます。高度なユースケースのために、多くのオプションの引数が用意されていますので、詳しくはコードのドキュメントをご覧ください。

サンプルコンポーネント

spine-unityには、高度なユースケースのソリューションを示す追加のサンプルコンポーネントが付属しています。最も重要なサンプルコンポーネントを以下に示します。

SkeletonRagdoll

アニメーションしているスケルトンを人形(ラグドール)のように変えたい場合(例えば、死んだときに物理的に落ちていく様子をシミュレートしたい場合)、SkeletonRenderer (またはサブクラスのSkeletonAnimationSkeletonMecanim)でラグドールの物理コンポーネントを作成するための快適なインターフェイスを提供する SkeletonRagdollSkeletonRagdoll2D のサンプルコンポーネントで実現できます。

SkeletonRagdoll2D コンポーネントのデモは、サンプルシーン Spine Examples/Other Examples/SkeletonUtility Ragdoll でご覧いただけます。

SkeletonRenderTexture

例えばスケルトンを透明度でフェードアウトしたい場合など、スケルトンを直接画面にレンダリングするのではなく、RenderTextureにレンダリングしたい場合があります。このコンポーネントは、スケルトンを適切なサイズと解像度で RenderTexture にレンダリングし、スケルトンにぴったり一致したQuadで表示する処理を行うので、シームレスに置き換えることができます。

後述のSkeletonRenderTextureFadeoutコンポーネントは SkeletonRenderTexture またはSkeletonGraphicRenderTextureコンポーネントを必要とします。GameObejctに SkeletonRenderTexture コンポーネントを追加した後、 SkeletonRenderTextureFadeout コンポーネントを追加すれば、正しくフェードアウトできます。

重要な注意事項: レンダリングのために中間RenderTextureを使用するのは、フレームバッファにスケルトンを直接描画するのに比べて高負荷な操作になります。そのため、このコンポーネントは必要な場合にのみ使用してください。実際に使いたいエフェクトを有効にするまでは無効にしておきましょう。例えば、フェードアウトを行うときだけ SkeletonRenderTexture コンポーネントを有効にし、その前後は無効のままにするなどです。

SkeletonGraphicRenderTexture

SkeletonGraphicを使っている場合に使用されるSkeletonRenderTextureの派生コンポーネントです。

SkeletonRenderTextureFadeout

スケルトンを透明にしてフェードアウトさせるにあたって、こちらで説明したようなアタッチメントの重なりが見えてしまう問題を避けたい場合があります。このコンポーネントはSkeletonRenderTextureまたはSkeletonGraphicRenderTextureコンポーネント(最初に追加する必要があります)と共に使用することで、一時的にRenderTextureに不透明なスケルトンをレンダリングし、次にこの RenderTexture のコンテンツを任意のフェード透明度でシーンに描画することができます。

SkeletonGhost

スピード感や力強さを表現するために、キャラクターにモーショントレイルやモーションブラーの効果を与えることもできます。SkeletonGhostサンプルコンポーネントは、SkeletonRenderer (またはサブクラスのSkeletonAnimationSkeletonMecanim)にアタッチすることで、カスタマイズ可能なマテリアルを使用してスケルトンを複数回描画することができます。

SkeletonUtilityKinematicShadow

いくつかのボーンに慣性を持たせたり、他のボーンの動きに反応させたりすることもできます。これは、より説得力のある方法でキャラクターの動きにマントを追従させるのに役立つ可能性があります。これは、SkeletonUtilityKinematicShadow コンポーネントで実現できます。これにより、ヒンジチェーンは、親のトランスフォームの位置の変化や、関係のないリジッドボディから解釈された速度を継承することができます。

SkeletonUtilityKinematicShadow コンポーネントのデモは、サンプルシーンSpine Examples/Other Examples/SkeletonUtility Animated Physics にあります。

RenderExistingMesh

アニメーションしているスケルトンの同一のコピーを異なる場所で複数回レンダリングすることで、パフォーマンスを節約したい場合があります。例えば、大きなスケルトンのグループではある程度の繰り返しが可能です。また、URPシェーダーの Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly を選択して、メッシュをそれ自身の後ろで再度レンダリングすることもできます。このコンポーネントを使用すると、すでにアニメーションして更新されたスケルトンメッシュを再度レンダリングすることができ、アニメーションとメッシュの計算にかかるオーバーヘッドを節約することができます。

RenderCombinedMesh

スケルトンに複数のマテリアルが必要な場合、ランタイムに付属しているアウトラインシェーダーは、スケルトン全体ではなく、各サブメッシュのアウトラインをかたどってしまいます。このコンポーネントを使用してサブメッシュを結合して単一のメッシュとしてレンダリングすれば、正しいアウトラインをかたどることができます。

次: レンダリング 前: 主要なコンポーネント