2011-08-28 78 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);