让 dampingRatio 与 Box2D 和 DistanceJoint 一起工作

Getting dampingRatio to work with Box2D and DistanceJoint

我在几个项目上都没有成功地尝试让距离关节在 Box2D 中永远停止摆动 JavaScript。无论我为物体的密度以及远关节定义的 dampingRatio 和 frequencyHz 设置什么值 - 结果都是你拿起一端而另一端无休止地摆动。我想让摆动变小,然后摆动几下就停止。

// I have made a world and bodies with density of 1 (although I have tried bigger)
var distanceJointDef = new b2DistanceJointDef();
distanceJointDef.Initialize(circleBody, triBody, circleBody.GetWorldCenter(), triBody.GetWorldCenter());
distanceJointDef.dampingRatio = 1; // tried .5, 20, etc. no difference
distanceJointDef.frequencyHz = 30; // tried all sorts of numbers
world.CreateJoint(distanceJointDef);

接头有效 - 但阻尼无效。任何帮助,将不胜感激。这是我正在使用的 Box2D 的 link:https://github.com/joelgwebber/bench2d/tree/master/js/Box2dWeb-2.1a.3

答案是对摆动的物体施加线性阻尼。变量定义 = 新的 b2BodyDef(); definition.linearDamping = .5; // 等等。数字接近 1 的速度很快