我试着用Box2D搞定。我可以编译我的程序但是当我尝试运行时出现错误。这是代码:
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(x, y);
body = world.CreateBody(&bodyDef);
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(w, h);
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.3f;
body->CreateFixture(&fixtureDef);
错误:
mezo: ~/cpp/Box2D_v2.2.1/Box2D/Collision/Shapes/b2PolygonShape.cpp:352: virtual void b2PolygonShape::ComputeMass(b2MassData*, float32) const: Assertion `area > 1.19209289550781250000e-7F' failed.
我想出是否注释出fixtureDef.density = 1.0f;我可以编译,运行并且一切正常,除了身体快速移动2(因为密度可能?),如果我将密度设置为0,它也可以工作。
答案 0 :(得分:1)
看起来你的形状区域非常小。检查w, h
值。身体的速度与它的密度无关。