2

簡単な質問: Nape で、Nape ボディ オブジェクトまたはそのボディの外側のポイントが与えられた形状との接点を計算する簡単な方法はありますか?

私がやろうとしているのは、Worms スタイルのロープの物理を作成することです。これは基本的に、レベル ジオメトリと接触すると自動的にセグメントに分割される延長可能なライン/ディスタンス ジョイントとして機能します。これは、最新のピボット ポイントからレイキャスティングすることで行います。衝突が発生した場合は、衝突ポイントから数ピクセルずらして、新しいロープ セグメントを作成し、そのポイントを新しいピボットにします。キャラクターが急な角を曲がっている場合は、そのポイントから再キャストし、必要に応じてループして、レベル ジオメトリをクリアします。

私の経験不足を考えると、それは驚くほどうまく機能しますが、外観上の小さな不具合が 1 つあります。ロープは、角の形をした突起に「きつく」巻きつきません。なぜこれが起こっているのかを理解するのはとても簡単です。下の図を参照してください。

ここに画像の説明を入力

うなじの世界を 60 フレーム/秒で歩くたびに光線を放ちます。図 1 は、2 つのサンプル レイキャストの違いを示しています。キャラクター (図示されていません) は線の端にあり、ピボットに関連する崖の「端」を 1 ステップで越えて落下しているため、衝突ポイントは目的の接触点に達していません。

図 2 は最終的に完成したものです。ラップアラウンド ロジックは、サーフェスからオフセットして再キャストすることで引き続き機能しますが、「ピンと張った」ようには見えません。

私が欲しいのは、図 3 のようなもので、角度を修正して体との実際の接触点を見つけ、そこから新しいピボットを作成します。

私が計画しているフォールバックは、レイキャストの角度を少しずつオフセットし、レベル ジオメトリにぶつからなくなるまで再キャストし、それから 1 つバックアップして、それをコリジョン ポイントとして使用することです。それでも、おそらく図 2 のように「曲がる」よりも計算が少なくて済みますが、もっと簡単な方法はないのでしょうか?

4

1 に答える 1

0

コメントしないですみませんが、そのために必要なポイントはありません:)

以前に似たようなものを使用したことがありますが(まったく同じではありません)、各キャストのポイントを保存し、y軸に基づいて開始点との差が最も大きいものを取得する方法だと思います(ロープが移動する場合上に移動すると、最小のポイントが得られ、yその逆も同様です (ロープは開始点から下降します)。次に、「エッジ」としてマークされたこの特定のポイントを指すように角度を修正できます。後で、ロープが反対方向に移動するので、一般的なパターンを続けることができます (崖の端のように)。

于 2014-03-14T15:38:12.780 に答える