Box2D无法设置“密度”

Box2D cannot set Density

本文关键字:密度 设置 Box2D      更新时间:2023-10-16

我正在尝试使用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,它也正常。

看起来形状的面积非常小。检查w, h值。物体的速度与密度无关。