Box2D Flash引擎碰撞检测问题
问题描述:
我以前见过这种类型的问题,但不知道解决方案是什么。 我已经将这个三角形添加到了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);
答
问题是顶点的顺序。
就像艾伦说的,在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);
我建议'.vertices [1] .SET(-9,1);'和'.vertices [2] .SET(1,1);' – JiminP
@JiminP不,Box2D的必须具有的顶点按顺时针顺序指定。 – Allan
@Allan我认为当我按顺序放置顶点时(或者我错了...... P),我遇到了问题。 – JiminP