1

ここに私の問題画像があります

代替テキスト

ボールが触れているかどうかを確認したいのですが、これは完璧に機能します。ただし、矢印の付いたボールが拾われないこともありますが、これは何にも触れていないため当然のことです。ただし、ボールがたとえば 4 ピクセル/0.001 m 離れている場合は接触と見なされるように、少し余裕を持たせたいと考えています。では、どのようなアイデア/どのように実装するのでしょうか。私はisTouchingコードを見て、ここに私が思いつくものがあります.

     var b1 = body1;
var b2 = body2;

 Transform xf;
 Transform xf2;

  b1.GetTransform(out xf);
b2.GetTransform(out xf2);


var touching = AABB.TestOverlap(b1.GetFixtureList().GetShape(), b2.GetFixtureList().GetShape(), ref xf, ref xf2);

 if (!touching)
 continue;

遠くにボールがあるかどうかをまだテストする必要があり、何ができるかわかりません。

4

1 に答える 1

1

すべてのクラスが何であるかを知らなければ、正確な答えを出すことは困難です。ただし、一般的な原則は、チェックしている境界を増やすことです。たとえば、シェイプが半径 n の円である場合、衝突をチェックするときに半径 n + 2 を使用できます。なお、半径 n を使用して円を描いていることに注意してください。増加した半径を衝突検出に使用するだけです。

同様に、AABB では、境界を数ピクセル増やす必要があります。それを行う方法は、クラスがどのように機能するかによって異なります。

于 2010-07-03T02:10:45.640 に答える