長方形の衝突応答を実装するにはどうすればよいですか?


7

私はJavaScriptでゲームに取り組んでおり、現在の衝突の実装では、最短距離を使用して交差するオブジェクトを押しのけていますが、これは常に正しいとは限りません。この理想的な衝突の図を作成しました。赤いボックスは開始位置、緑のボックスは適切な位置、黒いボックスは衝突する静的オブジェクトを表します。青い矢印は速度ベクトルです。私の現在の実装では、オブジェクトは最終位置に配置されて押し出されます(この場合、オブジェクトは左に押し出されます)

衝突の図

どうすれば修正できますか?

回答:


2

このページの数式を使用して、AABB / AABBトレースを実行する方法を手順で確認できます。

http://www.realtimerendering.com/intersections.html

基本的に、これらの方程式は、フレームをどの程度の割合で移動する必要があるかを示します。これにより、正方形を正しい位置に配置できます。


これは非常に有望に見えます。そのテーブルは将来に非常に便利に見えます。ありがとう!
ライアンS

0

これを行うにはいくつかの方法がありますが、1つの簡単な方法は、最後のフレームと現在のフレームの間のタイムラインでのバイナリ検索です。最後のフレームが時間tにあり、このフレームがt + 1にあるとします。衝突が発生した場合は、オブジェクトをt + .5にバックアップします。それでも衝突が発生する場合は、t + .25を試してください。そうでない場合は、t + .75を試してください。ステップが十分に小さくなるまで続けます。次に、最短距離のプッシュバックのテストを行います。次に、残りの時間を前に再生してください(衝突点を見つけるためにバックアップしたため)。

重要なのは、できる限りその時点に近づくことです。これにより、どの面が他のどの面と衝突したかが明確にわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.