質問

私は小さなゲームを実装することだし、トラブル正常に動作し、物理学を得ることが生じています。 このゲームでは、1個のボール(フレームからフレームへと移動し、半径を変更することができる円)と、いくつかの壁(また変更及びフレームからフレームへ移動する線分)があります。私は適切に衝突を検出し、ボールが正しい方向に跳ね返る作ることは問題ありませんすることができます。

困難が次にダブルバウンスを引き起こし、次のフレームで再び交差する、ボールは、1つのフレームのラインと交差する状況で生じます。私はそれが有効な位置になるまでバックラインの法線に沿ってボールを移動しますが、問題の行は、その軸に沿って打撃を受けているとき、これは本当に奇妙な行動を起こす(ピンポン玉が直立爪楊枝に落ち想像できるとそれは爪楊枝の一方の側にあるように、突然わきシフト...)。ボールが与えられたフレーム内の複数の線と交差するとき、いくつかの問題は、(四角形を作り一緒に4本のラインを想像しての角を交差ボールが矩形を言った)もあります - それはどの方向に跳ね返るでしょうか?どの方向にはシフトすべきでは?

私は本当に具体的な質問を持っていないが、ヒントやいくつかの有用なチュートリアルを探しています。すべての2Dのものは、私は今のところ唯一のカバー長方形の交差点を見つけることができた。

それはすべての違いを、私はXNAを使用しています。

おかげで、
キャメロン

役に立ちましたか?

解決

これは、ほとんどの物理学ライブラリと普遍的な問題です。あなたは「侵入深さ」のためにグーグル場合は(一緒に「物理学」と、私が提案する、またはあなたが完全に異なる何かを見つけるかもしれない:Dを)あなたも、これらのライブラリはあなたのようなトリックを使用していることがわかります。

これには2つのソリューションがあります。

安い1は、あなたの更新頻度を高めることです。代わりに、単一の大きなものの10のより小さなステップでオブジェクトを移動して、あなたはあまり浸透していますので、壁から離れてボールを相殺することによってそれを修正することはあまり見ることができます。

高価なものは、連続的な衝突検出です。移動や静止物体、双方の意志が交差する時間で正確なポイントを与え、あなたを伝えることができるアルゴリズムがあります。 Googleはこれらのいくつかを見つけるために、「球の長方形の交差点を総なめにした」。

あなたは、このように更新することができます:ボールは1.0単位で移動する必要があります。衝突をチェックします。衝突は0.25単位の後に発生するので、0.25単位でボールを移動し、反射ベクトルを計算する(そのボールが壁に跳ね返る)(あなたはボールの最終的な位置を知るまで)、残りの0.75単位で衝突チェックを繰り返します。これは完全に貫通を回避し、あなたのボールは、それは通常、単一のアップデートで壁をスキップすることを非常に速く動いている場合でも、衝突が検出されます。

他のヒント

一般的に、あなたの衝突は更新の間で許容できるポイントを過ぎて交差するため、タイムステップのことを受け入れています。

基本的に、あなたはなど、衝突が本当に起こった前回と今回のフレームの間にバックポイントに補間戻ってそのポイントにオブジェクトを移動し、力を計算する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top