ライセンスについて
Spineランタイムをアプリケーションに組み込むにはSpineライセンスが必要です。
ユーティリティーコンポーネント
SkeletonRootMotion
spine-unityは、3つのSpineスケルトンコンポーネントすべてでルートモーションをサポートしています。SkeletonRootMotion コンポーネントは、SkeletonAnimationとSkeletonGraphic (UI)のGameObjectsにアタッチすることができ、SkeletonMecanimには別のSkeletonMecanimRootMotionコンポーネントが用意されています。このルートモーションコンポーネントをアタッチすることは、UnityのMecanim Animatorコンポーネントの Apply Root Motion パラメーターを有効にするのと同じように動作します。有効にすると、選択された Root Motion Bone の動きに応じて、キャラクターの位置がアニメーションで駆動されます。
注意: SkeletonMecanimオブジェクトにはSkeletonMecanimRootMotionコンポーネントが用意されています。
SkeletonRootMotionはSkeletonAnimationやSkeletonGraphic (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 UpdateInspectorパラメーターを、In FixedUpdateに設定することをお勧めします。 - Rigidbody :
Rigidbodyが割り当てられると、TransformコンポーネントではなくRigidbodyによって与えられる物理演算が動きに適用されます。そのため、SkeletonAnimationコンポーネントのAdvanced-Animation UpdateInspectorパラメーターを、In FixedUpdateに設定することをお勧めします。
補足:
SkeletonRootMotionクラスはAdjustRootMotionToDistance()やその他のメソッドを提供し、簡単にデルタ補正を行うことができます。デルタ補正は、例えば、ジャンプを所定の距離に引き伸ばすために使用できます。skeletonRootMotion.AdjustRootMotionToDistance(targetPosition - transform.position, trackIndex);によって、アニメーションの開始時やフレームごとにルートモーションを調整することができます。
SkeletonMecanimRootMotion
これはSkeletonMecanimコンポーネントで使用できる、SkeletonRootMotionコンポーネントの派生コンポーネントです。
SkeletonMecanimRootMotion コンポーネントは、UnityのMecanim Animatorの Apply 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は、ローカルのトランスフォーム値を使用します。これはスケルトンのボーン階層を反映したSkeletonUtilityBoneGameObjectsの階層に依存しています。SkeletonUtilityBoneの階層を素早く作成するには、後述のSkeletonUtilityコンポーネントを使用することをお勧めします。
SkeletonUtilityBone のInspectorには、追加の子ボーンを作成したり(選択的または再帰的に)2Dおよび3Dのヒンジチェーンのヒンジチェーンを作成するためのインターフェースも用意されています。

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

使用例
ユーザーがスケルトンのボーンをドラッグして移動させるようなユースケースでは、Override モードで SkeletonUtilityBone を使用します。
GameObjectが追従する必要があるのが1つのボーンだけの場合は、代わりにBoneFollowerコンポーネントを使うことで、リソースを節約することができます。
サンプルシーン
Spine Examples/Other Examples/SkeletonUtility Animated Physics で SkeletonUtilityBone の使い方を示すサンプルシーンを確認できます。このシーンでは、一部の SkeletonUtilityBones ノードが Override ノードに必要な階層的な親となるために、ボーンの位置に対して Follow (追従)するように設定されています。
物理演算のための2Dおよび3Dヒンジチェーン

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

最初の SkeletonUtilityBone チェーン要素を選択し、Inspectorで Create 3D Hinge Chain または Create 2D Hinge Chain を選択して、物理リグを生成します。その際、選択した要素とその SkeletonUtilityBone の子要素すべてがヒンジチェーンになります。次に、RigidbodyのDrag(空気抵抗)とMass(質量)のパラメーターを調整して、結果を微調整します。Dragの値を上げると、Rigidbodyの動きが遅くなり、重さや空気との相互作用の効果が生まれます。
チェーンのルートノードは、スケルトンのボーンに親子付けされているのではなく、シーンの最上位階層に配置されていることに注意してください。これは運動量を適切に適用するためのUnityの要件です。チェーンルートをスケルトンのボーンに再び親子付けしないでください。そうしないと、チェーン要素がスケルトンの動きの影響を受けなくなってしまいます!
3Dヒンジチェーン
- まず通常通りSkeletonUtilityBone階層を作成してください。
- Sceneパネルで最初のチェーン要素を選択し、Inspectorで
Create 3D Hinge Chainを選択して、3Dヒンジチェーンリグを作成します。
- これにより、前の親(この例では
cape-root)からチェーンGameObjectが削除され、新しいHingeChain ParentGameObjectがシーンの最上位に配置されます。前述のように、このGameObjectはスケルトンに対して再び親子付けしないでください!
- チェーン要素のRigidbodyのDrag(空気抵抗)とMass(質量)のパラメーターを調整して、結果を微調整してください。
スケルトンが反転すると、HingeChain Parent GameObjectは自動的に180度回転し、反転したボーンの位置に合わせてヒンジチェーンが調整されます。
2Dヒンジチェーン
- まず通常通りSkeletonUtilityBone階層を作成してください。
- Sceneパネルで最初のチェーン要素を選択し、Inspectorで
Create 2D Hinge Chainを選択して、2Dヒンジチェーンリグを作成します。
- これにより、前の親(この例では
cape-root)からチェーンGameObjectが削除され、新しいHingeChain ParentGameObjectがシーンの最上位に配置されます。前述のように、このGameObjectはスケルトンに対して再び親子付けしないでください!
- チェーン要素のRigidbody2DのDrag(空気抵抗)とMass(質量)のパラメーターを調整して、結果を微調整してください。
このGameObjectには、Hinge Chain と Hinge Chain FlippedX という名前の2つの子オブジェクトが含まれていることに注意してください。スケルトンが反転すると、これらのGameObjectが自動的にアクティブになったり非アクティブになったりして切り替わり、それぞれのヒンジチェーンを有効にします。
SkeletonUtility
SkeletonUtilityBonesの階層の作成
SkeletonUtility コンポーネントは、スケルトンのボーン階層を反映したSkeletonUtilityBone GameObjectsの階層を素早く作成することができます。

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

SkeletonUtility コンポーネントには、Spawn Hierarchy というボタンがあり、クリックすると以下のオプションが表示されます:
Follow all bonesは全てのボーンに対してSkeletonUtilityBoneGameObjectsをその階層内に作成し、モードをFollowに設定します。Follow (Root Only)はルートのSkeletonUtilityBoneGameObjectのみを作成し、モードをFollowに設定します。Override all bonesは全てのボーンに対してSkeletonUtilityBoneGameObjectsをその階層内に作成し、モードをOverrideに設定します。Override (Root Only)はルートのSkeletonUtilityBoneGameObjectのみを作成し、モードをOverrideに設定します。
各 SkeletonUtilityBone は、必要に応じてスケルトンのボーン位置をオーバーライドするように設定できます。

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

C#
これはサブクラス「SkeletonUtilityConstraint」を派生させるための基底クラスです。これは自動的に親の SkeletonUtility で自分自身を登録し、それに応じてアップデートされます。
独自のコンストレイントクラスを作成する方法については、コンストレイントクラスの例 SkeletonUtilityGroundConstraint および SkeletonUtilityEyeConstraint を参照してください。
サンプルシーン
spine-unityランタイムには、上記のコンストレイントを紹介するサンプルシーン、Spine Examples/Other Examples/SkeletonUtility GroundConstraint と Spine Examples/Other Examples/SkeletonUtility Eyes が付属しています。
SkeletonRendererCustomMaterials

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

SkeletonRenderer (またはサブクラスのSkeletonAnimationとSkeletonMecanim)を右クリックして 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 (またはサブクラスのSkeletonAnimationやSkeletonMecanim)を2つ以上の SkeletonPartsRenderers に分割し、レイヤーの順番をカスタマイズすることができます。
注意: SkeletonGraphicコンポーネントは、
SkeletonGraphicのInspectorのAdvancedセクションで直接レンダリングを分離する機能を提供しているため、追加のコンポーネントを使う必要はありません。

注意: 通常、Spineのレンダラーコンポーネントは、スケルトンのメッシュ全体を表示するために1つのレンダラーを使用します。このため、残念ながら他の
UnityEngine.Renderers(SpriteRenderer、MeshRenderer、ParticleSystemなど) をそのパーツの間に挿入することはできません。
設定
-
まず対象のスケルトンのDraw Order(表示順序)を確認してください。スケルトンのレンダリングをパーツに分けるために使用するスロットを確認します。スケルトンをエクスポートする前に、このスロットに明確なラベルを付けておくと便利です。
-
SkeletonRenderSeparatorコンポーネントの追加 Spine GameObjectを選択してください。次にInspector内のSkeletonAnimationまたはSkeletonRendererを右クリックして、
Add Skeleton Render Separatorを選択します。これでSkeletonRenderSeparatorがGameObjectに追加されます。

-
Separator Slotsの割り当て 追加した直後はInspectorに「セパレーターのリストが空だ」という旨の警告が表示されますので、
Separator Slot Namesで必要なスロットを選択して、セパレータースロットを設定してください。+ボタンからセパレータースロットを追加することができます。注意: このフィールドは、SkeletonRenderer (またはそのサブクラスのSkeletonAnimationとSkeletonMecanim)コンポーネントでシリアル化され、
SkeletonRenderSeparatorはそのためのインターフェースを提供するだけです。 -
Parts Renderersの追加 Inspectorに「パーツレンダラーが足りない」という旨の警告が表示されるので、
Add the missing renderers (n)ボタンをクリックして、SkeletonPartsRendererコンポーネントで必要なGameObjectを作成してください。これらのGameObjectは、上のParts Renderersリストに自動的に割り当てられます。注意:
SkeletonRenderSeparatorは、現在の表示順序に応じて、必要なパーツレンダラーの数を検出します。しかし実行時に表示順序が変更されると、レンダラーがより多くのパーツレンダラーを必要とすることがあります。この場合、Add Parts Rendererボタンをクリックして、1つまたは2つの追加パーツレンダラーを手動で追加する必要があります。 -
Sorting LayerとOrder in Layerの設定 各SkeletonPartsRenderersには、InspectorにSorting LayerとOrder in Layerプロパティが用意されています。これで各SkeletonPartsRendererでソートのプロパティを設定することができます。値が大きいほどレンダラーが前面に移動します。

補足:
SkeletonPartsRendererGameObjectは、Spine GameObjectの子である必要はありません。SkeletonRenderSeparatorは参照を保持しているので、必要に応じて整理してください。
サンプルシーン
SkeletonPartsRenderer と SkeletonRenderSeparator の使用方法を紹介しているサンプルシーンは Spine Examples/Other Examples/SkeletonRenderSeparator にあります。
C#
有効化と無効化
デフォルトでは、SkeletonRenderSeparator はSkeletonRendererを無効にして、メッシュのレンダリングタスクを引き継ぎます。同様に、SkeletonRenderSeparator を無効にすると、SkeletonRendererが再びレンダリングを引き継ぎます。
SkeletonRenderSeparator は、任意のコンポーネントとして有効または無効にすることができます:
skeletonRenderSeparator.enabled = false; // 分離を無効化
分離基準の変更
分離の基準は SkeletonRenderSeparator では保持していません。 SkeletonRenderer (またはサブクラスのSkeletonAnimationとSkeletonMecanim)のセパレータースロットによって定義されます。実行時にセパレータースロットを操作したい場合は、リスト SkeletonRenderer.separatorSlots にアクセスして、通常通り Add、Remove、Clear で操作できます。
skeletonAnimation.separatorSlots.Clear();
skeletonAnimation.separatorSlots.Add(mySlot);
実行時にSkeletonRenderSeparatorを追加する
新しい SkeletonRenderSeparator コンポーネントを追加して初期化するには、staticメソッド SkeletonRenderSeparator.AddToSkeletonRenderer を使用します。
skeletonAnimation.SeparatorSlots.Add(mySlot); // 上記参照
// SkeletonRenderSeparatorを追加
SkeletonRenderSeparator skeletonRenderSeparator = SkeletonRenderSeparator.AddToSkeletonRenderer(skeletonAnimation);
デフォルトでは、現在必要な SkeletonPartsRenderers が追加されます。高度なユースケースのために、様々なオプションの引数が用意されていますので、詳しくはコードのドキュメントをご覧ください。
サンプルコンポーネント
spine-unityには、高度なユースケースのための解決策を実演する追加のサンプルコンポーネントが付属しています。以下は、その中で最も重要なサンプルコンポーネントの紹介です。
SkeletonRagdoll
アニメーションしているスケルトンを人形(ラグドール)のように変えたい場合(例えば、死亡時に物理的に落下する様子をシミュレートしたい場合)、SkeletonRenderer (またはサブクラスのSkeletonAnimationとSkeletonMecanim)でラグドールの物理コンポーネントを作成するための快適なインターフェイスを提供する SkeletonRagdoll と SkeletonRagdoll2D のサンプルコンポーネントで実現できます。
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 (またはサブクラスのSkeletonAnimationとSkeletonMecanim)にアタッチすることで、カスタマイズ可能なマテリアルを使用してスケルトンを複数回描画することができます。
SkeletonUtilityKinematicShadow
いくつかのボーンに慣性を持たせたり、他のボーンの動きに反応させたりすることもできます。これは、より説得力のある方法でキャラクターの動きにマントを追従させるのに役立つ可能性があります。これは、SkeletonUtilityKinematicShadow コンポーネントで実現できます。これにより、ヒンジチェーンは、親のトランスフォームの位置の変化や、関係のないリジッドボディから解釈された速度を継承することができます。
SkeletonUtilityKinematicShadow コンポーネントのデモは、サンプルシーン Spine Examples/Other Examples/SkeletonUtility Animated Physics にあります。
RenderExistingMesh
アニメーションしているスケルトンの同一のコピーを異なる場所で複数回レンダリングすることで、パフォーマンスを節約したい場合があります。例えば、大きなスケルトンのグループではある程度の繰り返しが可能です。また、URPシェーダーの Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly を選択して、メッシュをそれ自身の後ろで再度レンダリングすることもできます。このコンポーネントを使用すると、すでにアニメーションして更新されたスケルトンメッシュを再度レンダリングすることができ、アニメーションとメッシュの計算にかかるオーバーヘッドを節約することができます。
RenderExistingMeshGraphic
SkeletonGraphicを使っている場合に使用されるRenderExistingMeshの派生コンポーネントです。
RenderCombinedMesh
スケルトンに複数のマテリアルが必要な場合、ランタイムに付属しているアウトラインシェーダーは、スケルトン全体ではなく、各サブメッシュのアウトラインをかたどってしまいます。このコンポーネントを使用してサブメッシュを結合して単一のメッシュとしてレンダリングすれば、正しいアウトラインをかたどることができます。