我之前见过这种类型的问题,但不知道解决方案是什么。 我已将此三角形添加到b2Body对象(下面的主体变量)中,并且碰撞检测不起作用。形状只是相互通过,我无法发布整个代码,因为它非常大。
polyDef.vertexCount = 3;
polyDef.vertices[0].Set( 1, 2);
polyDef.vertices[1].Set(1, 1);
polyDef.vertices[2].Set(-9, 1);
body.CreateShape(polyDef);
答案 0 :(得分:1)
问题是顶点的顺序。
就像Allan所说,在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);