ライセンスについて
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 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 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
は、ローカルのトランスフォーム値を使用します。これはスケルトンのボーン階層を反映したSkeletonUtilityBone
GameObjectsの階層に依存しています。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 Parent
GameObjectがシーンの最上位に配置されます。前述のように、このGameObjectはスケルトンに対して再び親子付けしないでください! - チェーン要素のRigidbodyのDrag(空気抵抗)とMass(質量)のパラメーターを調整して、結果を微調整してください。
スケルトンが反転すると、HingeChain Parent
GameObjectは自動的に180度回転し、反転したボーンの位置に合わせてヒンジチェーンが調整されます。
2Dヒンジチェーン
- まず通常通りSkeletonUtilityBone階層を作成してください。
- Sceneパネルで最初のチェーン要素を選択し、Inspectorで
Create 2D Hinge Chain
を選択して、2Dヒンジチェーンリグを作成します。 - これにより、前の親(この例では
cape-root
)からチェーンGameObjectが削除され、新しいHingeChain Parent
GameObjectがシーンの最上位に配置されます。前述のように、この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
は全てのボーンに対してSkeletonUtilityBone
GameObjectsをその階層内に作成し、モードをFollow
に設定します。Follow (Root Only)
はルートのSkeletonUtilityBone
GameObjectのみを作成し、モードをFollow
に設定します。Override all bones
は全てのボーンに対してSkeletonUtilityBone
GameObjectsをその階層内に作成し、モードをOverride
に設定します。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 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
でソートのプロパティを設定することができます。値が大きいほどレンダラーが前面に移動します。
補足:
SkeletonPartsRenderer
GameObjectは、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
を選択して、メッシュをそれ自身の後ろで再度レンダリングすることもできます。このコンポーネントを使用すると、すでにアニメーションして更新されたスケルトンメッシュを再度レンダリングすることができ、アニメーションとメッシュの計算にかかるオーバーヘッドを節約することができます。
RenderCombinedMesh
スケルトンに複数のマテリアルが必要な場合、ランタイムに付属しているアウトラインシェーダーは、スケルトン全体ではなく、各サブメッシュのアウトラインをかたどってしまいます。このコンポーネントを使用してサブメッシュを結合して単一のメッシュとしてレンダリングすれば、正しいアウトラインをかたどることができます。