我有一个带有自定义形状体的Box2DWeb模拟但它根本不与其他体相互作用。调试绘图显示检测到碰撞,但它没有任何效果。阅读自定义形状我没有找到任何设置来启用碰撞,我不知道出了什么问题。自定义形状体是这样创建的,我还发布了示例here:
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);
答案 0 :(得分:1)
Box2D只知道如何处理凸多边形,因此您必须从多个夹具中制作十字形状以考虑凹面部分。例如,你可以在中间有两个相交的长矩形。