シンプルな3Dゲーム物理エンジンを実装しました。私はすでに適切な衝突検出を行っていますが、今は衝突応答の部分を理解しようとしています。衝突後の速度を計算するために、インパルスベースの方法を使用しています。これはかなりうまく機能しますが、ボディが相互貫通し続けるのを完全に防ぐわけではありません。そのため、ペネトレーションを解決するための追加のコードがあります。現在、私はボディを接触法線に沿って浸透深さの半分だけ移動します-最初のボディは接触法線の方向に、2番目のボディは反対方向に移動します。
これはほとんどの場合問題ありませんが、いくつかの望ましくない影響があります。たとえば、狭い廊下とその中を移動するオブジェクトを想像してみてください。オブジェクトが廊下の壁の1つにぶつかると、透過解像度によって反対側の壁に移動し、次のフレームで最初の壁に戻ります。効果は、オブジェクトが壁の間で本当に速く振動しているようなものであり、きれいではありません。
だから私の質問は、侵入を解決するより良い方法があるかどうかです?おそらくボディを動かさずに、(インパルス計算に加えて)どういうわけか速度を調整して、ボディが互いに近づくのを止め、ペネトレーションが次の数フレームで解決するようにします。私はここで推測しています。何か案は?