Box2dWeb взаимодействие с пользовательской формой

У меня есть симуляция Box2DWeb с телом произвольной формы, но он вообще не взаимодействует с другими телами. Отладочная отрисовка показывает, что столкновение обнаружено, но оно не имеет никакого эффекта. Читая о пользовательских формах, я не нашел ничего, чтобы настроить, чтобы включить столкновение, я понятия не имею, что не так. Пользовательское тело формы создается следующим образом. Я также разместил пример здесь:

bodyDef = new b2BodyDef;
bodyDef.type = b2Body.b2_dynamicBody;
bodyDef.position.x = canvas.width/30/2;
bodyDef.position.y = 2;
body = world.CreateBody(bodyDef);
v = [[2,0],
[2,2],
[0,2],
[0,3],
[2,3],
[2,5],
[3,5],
[3,3],
[5,3],
[5,2],
[3,2],
[3,0]];
vecs = [];
for(i=0;i<v.length;i++){
cc = new b2Vec2();
cc.Set(v[i][0],v[i][1]);
vecs[i] = cc;
}
fixDef.shape = new b2PolygonShape;
fixDef.shape.SetAsArray(vecs,vecs.length);
body.CreateFixture(fixDef);

1 ответ

Решение

Box2D знает, как работать с выпуклыми многоугольниками, поэтому вам придется создавать форму креста из нескольких приборов, чтобы учесть вогнутые участки. Например, у вас может быть два длинных прямоугольника, которые пересекают друг друга в середине.

Другие вопросы по тегам