Проблемы с движком Box2D Flash при обнаружении столкновений - PullRequest
0 голосов
/ 29 августа 2011

Я видел подобные проблемы раньше, но не знал, что это за решение.Я добавил этот треугольник в объект b2Body (переменная body ниже), и обнаружение столкновений для него не работает.Фигуры просто пересекаются, я не могу опубликовать весь код, потому что он довольно большой.

     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 Ответ

1 голос
/ 30 августа 2011

Проблема была в порядке вершин.

Как сказал Аллан, в 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);
...