1

这是我的问题图片

替代文字

我想检查球是否接触,这很完美。然而,有时带有箭头的球没有被捡起,这当然是有道理的,因为它没有碰到任何东西。但是,我想留一点余地,这样如果一个球在 4 像素/0.001m 之外,它应该被认为是触摸的。那么我将如何实施它。我查看了 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 回答