Unity のコライダーに従う脊椎アニメーション (衝突検出)


序文

スパインで作成したアニメーションをUnityにエクスポートした後、アニメーションオブジェクトに直接コライダーを追加することができます。
ただし、オブジェクトをアニメーション化すると、設定されたコライダーはアニメーションに合わせて移動せず、コライダーは初期位置に留まり、オブジェクトがアニメーションに合わせて移動するというパフォーマンスが得られます。
図に示すように、
ここに画像の説明を挿入
その理由は、この時点ではオブジェクトの Transform がまったく変化しておらず、ナチュラル コライダーも一緒に移動しないためです。


1. BoneFollower コンポーネントを使用する

ドキュメントの説明を見てください。

ここに画像の説明を挿入

このコンポーネントの機能は、アタッチされたオブジェクトを指定されたボーンに追従させることです。

具体的な使い方

  • 必要なオブジェクトの下にサブオブジェクトを作成し、BoneFollowerコンポーネントを追加し、ボーン名が従う必要があるボーンを選択して、コライダーを追加します。
    実行すると、オブジェクトのトランスフォームが変化し始めることがわかり、コライダーは自然に変化に追従します。
    ここに画像の説明を挿入
  • 別の使用法は、バウンディング ボックスがSpine に追加される場合に当てはまります。
    边界框是Spine创建动画时一种多边形,类似于Unity中的Polygon Collider。

ボーン JSON ファイルを表示し
boundingboxを検索することで、エクスポートされたリソースにバウンディング ボックスが追加されているかどうかを確認できます。
ここに画像の説明を挿入

  1. BoundingBoxFollowerコンポーネントをオブジェクトに追加し、「理想的な方法は、コンポーネントをサブオブジェクトに追加することです」というプロンプトが表示されたら、下のボタンをクリックしてサブオブジェクトを作成し、コンポーネントを自動的に追加します。
    ここに画像の説明を挿入
  2. スロット内の境界ボックスを含むスロットを選択すると、Ploygon Collider 2D が自動的に生成されます。
    ここに画像の説明を挿入
  3. BoundingBoxFollower コンポーネントの「Add Bone Follower」をクリックすると、自動的に BoneFollower コンポーネントが追加されます。フォローするボーンも選択します。
    ここに画像の説明を挿入

バウンディングボックスフォロワー:
境界ボックスフォロワー

2. SkeletonUtility コンポーネントを使用する

スケルトンユーティリティ:
ここに画像の説明を挿入

このコンポーネントは、元のオブジェクトのボーン階層を分割して、2D アニメーションのようなボーン階層を形成します。

具体的な使用方法:

ここに画像の説明を挿入

オーバーライドとフォローの違いはドキュメントに詳しく書かれています。SkeletonUtilityBone
オーバーライド モードでは、ボーンをドラッグできます。通常は [フォロー] を選択します。通常は、上記のメソッドに続く最初のBoneFollower
を使用することを選択できます。これは、よりシンプルでパフォーマンスが節約されます。
ここに画像の説明を挿入

上のボタンをクリックすると、対応するボーン階層が生成され、ルートの下のボーンを選択して実行すると、SkeletonUtilityBone コンポーネントのおかげでボーンの Transform を変更できることがわかります。この時点で、対応するボーンの下にコライダーを追加します。
ここに画像の説明を挿入


要約する

ChatGpt からの要約:
このブログでは、Spine アニメーションを Unity にエクスポートした後、アニメーション オブジェクト コライダーがアニメーションに追従せず、初期位置に留まる問題を解決する 2 つの方法を紹介します。

1 つ目の方法は、BoneFollower コンポーネントを使用する方法です。このコンポーネントの機能は、指定されたボーンにアタッチされたオブジェクトを追従させることです。具体的な使用方法は、目的のオブジェクトの下にサブオブジェクトを作成し、BoneFolwer コンポーネントを追加し、追跡するボーンを選択して、コライダーを追加することです。このように、オブジェクトの Transform がアニメーションに合わせて変化するため、コライダーも変化します。

2 番目の方法は、SkeletonUtility コンポーネントを使用する方法です。これは、元のオブジェクトのボーン階層を分割して、2D アニメーションと同様のボーン階層を形成します。SkeletonUtility を使用する場合、オーバーライド モードまたはフォロー モードを選択できますが、通常はフォローを選択します。対応するボーン階層を作成し、対応するボーンの下にコライダーを追加すると、ボーンの Transform が SkeletonUtilityBone コンポーネントによって制御され、コライダーを追跡できるようになります。

著者は、Unity の Polygon Collider に似た Spine へのバウンディング ボックスの追加についても言及しました。境界ボックスのあるオブジェクトの場合は、BoundingBoxFollower コンポーネントを使用し、「Add Bone Follower」をクリックして BoneFolwer コンポーネントを自動的に追加し、従うボーンを選択します。

最後に、最初のメソッドである BoneFollower の方がシンプルでパフォーマンス効率が高く、アニメーションに続くコライダーの問題を解決するには、ほとんどの場合このメソッドを使用することをお勧めします。

ブログ全体では、読者の理解と操作を容易にするために、2 つの方法の具体的な手順を詳細に紹介し、対応するスクリーンショットの例を添付します。

おすすめ

転載: blog.csdn.net/RainWind777/article/details/132000628