2010-06-30 88 views
1

这里是我的问题 图片Box2D的联系(isTouching)问题

alt text

我要检查,如果球是感人的,这可以完美运行。然而,有时候带箭头的球没有拿起来,这当然是有道理的,因为它没有触及任何东西。但是,我想给出一点余地,这样如果一个球的距离为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; 

我仍然需要测试是否有球离开,我对我能做的事情无能为力。

回答

1

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

同样,使用AABB,您需要增加几个像素的边界。你如何做将取决于你的课程如何工作。

+0

如果增加圆形的半径,那么它们的AABB也应该更新。无需手动增加尺寸。 – 2010-07-04 11:24:53