ウォーマーの敵に小惑星基地のブログへのリンクを投稿しようとしていたとき、カーミントンがコメントですでにガマスートラの記事にリンクしていることに気付きました。
ただし、それ自体で答えとして、これにもう少し可視性と説明を与える価値があります。
秘 trickはレイキャストです。これらにより、コードは衝突に沿って線に沿ってスキャンできます。
Walkerをサーフェスにうまく合わせるために、2つの光線を地形に向けて発射します。1つはWalkerの左側から、もう1つは右側から発射します(上の赤と黄色の線)。
各RaycastHit2Dオブジェクトから、サーフェスに垂直な方向を指す法線ベクトル(マゼンタと緑の線)を取得できます。2回のヒットからの法線を平均化することで、基礎となる地形(シアンの線)を適度に反映したキャラクターに適した方向を取得します。
このオリエンテーションラインに沿ってフォースを適用して、キャラクターを地形に固定したままにすることができます(ただし、摩擦が低いと多少のスライドが発生する可能性があります)。
キャラクターが振動したり、ロボットのように見えるのを防ぐために、キャラクターの向きを徐々にブレンドします(Walkerがコーナーを横切るときの法線の急激な変化を確認しますが、ボディはスムーズに動きます)。
地形に鋭い角がある場合、これらの光線をわずかに内側に傾けることができます。クモが90度の崖の端を通り過ぎると、張り出した光線が崖面に当たります。
また、小惑星基地チームは、歩行者の動きの方向に短い光線を照射し(図示せず)、地形に当たるとその側の光線をオーバーライドします。これにより、歩行者が90度の凹面のコーナーを歩いているときに立ち往生することがなくなります。
ドキュメントによると、2Dレイキャストは、レイが開始するコライダーを検出するという点で3Dレイキャストと異なります。私にはうんざりしているように聞こえますが、テストでこれが確認された場合は、layerMaskを使用して、レイを制限して登山可能な地形コライダーのみを検出する必要があります。