2011-08-28 183 views
0

我以前見過這種類型的問題,但不知道解決方案是什麼。 我已經將這個三角形添加到了b2Body對象(下面的body變量),並且碰撞檢測不適用於它。形狀只是通過對方,我不能發佈整個代碼,因爲它很大。Box2D Flash引擎碰撞檢測問題

 polyDef.vertexCount = 3; 
    polyDef.vertices[0].Set(1, 2); 
    polyDef.vertices[1].Set(1, 1); 
    polyDef.vertices[2].Set(-9, 1); 
    body.CreateShape(polyDef); 
+1

我建議'.vertices [1] .SET(-9,1);'和'.vertices [2] .SET(1,1);' – JiminP

+0

@JiminP不,Box2D的必須具有的頂點按順時針順序指定。 – Allan

+0

@Allan我認爲當我按順序放置頂點時(或者我錯了...... P),我遇到了問題。 – JiminP

回答

1

問題是頂點的順序。

就像艾倫說的,在Box2D中,頂點應該是順時針順序的,所以看起來(1,2), (1,1), (-9,1)的順序是正確的。

但是,由於y座標顛倒,該順序實際上是CCW。

因此,順序應該像這樣改變。

 
polyDef.vertexCount = 3; 
polyDef.vertices[0].Set(1, 2); 
polyDef.vertices[1].Set(-9, 1); 
polyDef.vertices[2].Set(1, 1); 
body.CreateShape(polyDef);