box2djs 中的弹簧效果

Raj*_*esh 4 box2d box2dweb

我想使用 box2djs 模拟弹簧效果。经过大量搜索,我认为可以使用该距离关节(我不确定)。我尝试了以下代码,但我看不到身体之间的任何关节。

 distance_joint = new b2DistanceJointDef();

distance_joint.body1 = Body1;

distance_joint.body2 = Body2;

distance_joint.localAnchorA = new b2Vec2(0, 0);

distance_joint.localAnchorB = new b2Vec2(0, 0);

distance_joint.length = 3;

distance_joint.collideConnected = true;

return world.CreateJoint(distance_joint); 
Run Code Online (Sandbox Code Playgroud)

任何的想法...

谢谢

Pav*_*vel 5

你是对的,距离接头可以用作弹簧。这是在 Box2D 手册中说的:

距离接头也可以做得很软,就像弹簧阻尼器连接一样。请参阅测试台中的 Web 示例以了解其行为方式。

柔软度是通过调整定义中的两个常数来实现的:频率和阻尼比。将频率视为谐波振荡器(如吉他弦)的频率。频率以赫兹为单位指定。通常,频率应小于时间步长频率的一半。所以如果你使用60Hz的时间步长,距离关节的频率应该小于30Hz。原因与奈奎斯特频率有关。

阻尼比是无量纲的,通常介于 0 和 1 之间,但也可以更大。为 1 时,阻尼至关重要(所有振荡都应消失)。

jointDef.frequencyHz = 4.0f;
jointDef.dampingRatio = 0.5f;
Run Code Online (Sandbox Code Playgroud)