BOX2D联系(isTouching)问题

时间:2010-06-30 20:35:53

标签: c# xna box2d

这是我的问题 图像

alt text

我想检查球是否接触,这是完美的。然而,有时带箭头的球没有被拾取,这当然是有意义的,因为它没有触及任何东西。但是,我想给予一点余地,这样如果一个球说4像素/ 0.001米远,它应该被认为是触摸。那么我有什么想法/如何实施呢?我查看了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;

我仍然需要测试是否有一个遥远的球,我对我能做的事情一无所知。

1 个答案:

答案 0 :(得分:1)

如果不知道所有课程是什么,很难给出确切的答案。但是,一般原则是增加你要检查的界限。例如,如果您的形状是半径为n的圆,则在检查碰撞时您可以使用半径为n + 2.请注意,您仍然使用半径n绘制圆。您只需使用增加的半径进行碰撞检测。

同样,对于AABB,您需要将边界增加几个像素。你如何做到这将取决于你的班级如何运作。