2010-06-30 64 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