1

非常に単純な衝突検出を使用するゲームを作成しています。ボックス 2D はやり過ぎなので使用していません。基本的には、ポンとフーズボールのミックスです。ボールが速度を上げて非常に高速になると、衝突するはずの壁を突き抜けてしまいます。このコードは、低速および通常の速度では機能しますが、非常に速い動きでは機能しません。

これは私のコードのスニペットです:

pos.x は、ボールの x 位置を保持するベクトルです。

if (pos.x - radius < wallLeft)
{
        pos.x = wallLeft + radius;
        vel.x *= -1;
}

これを改善するにはどうすればよいですか?ありがとう

4

3 に答える 3

1

ボールの速度が wallLeft よりも大きくならないように、wallLeft を少し増やしてみてください。ボールが 0 を下回った後、フレームワークに慣れていないか、またはそのためのコードがいくつかあります。コードの残りの部分がどのように機能するかはわかりませんが、それが最も簡単な解決方法です。それをしたくない場合は、ボールの x が 0 未満の場合に何かを行うコードがおそらくどこかにあるので、それをもう少し寛大にする必要があります。ボールの x が-50未満、またはそのようなもの(機能するまで数字をいじってください)

于 2011-08-25T21:46:50.943 に答える
0

おそらく (pos.x - radius) == wallLeft の場合、ボールはすでに壁に触れており、その速度を逆転させることができます。これをループの追加テストとして追加すると、役に立ちますか?

于 2011-08-25T21:59:37.613 に答える
0

私が持っている唯一の考えは、速度が非常に高いため、位置に追加するとオーバーフローが発生し、 pos.x > wallLeft + radius が再び発生するということです。

于 2011-08-25T22:07:51.447 に答える