Взаимодействие пользовательской формы 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);

person lelloman    schedule 22.12.2012    source источник


Ответы (1)


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

person iforce2d    schedule 22.12.2012