Весенний эффект в box2djs
Я хочу имитировать эффект весны, используя 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);
Любая идея...
Спасибо
2 ответа
Вы правы, дистанционное соединение можно использовать как пружину. Это сказано в руководстве Box2D:
Дистанционное соединение также может быть мягким, как пружинно-демпферное соединение. Посмотрите веб-пример на тестовом стенде, чтобы увидеть, как это ведет себя.
Мягкость достигается настройкой двух констант в определении: частоты и коэффициента демпфирования. Думайте о частоте как о частоте гармонического осциллятора (как гитарная струна). Частота указана в герцах. Обычно частота должна быть меньше половины частоты временного шага. Так что, если вы используете шаг 60 Гц, частота стыка должна быть меньше 30 Гц. Причина связана с частотой Найквиста.
Коэффициент демпфирования не является размерным и обычно составляет от 0 до 1, но может быть больше. В 1 демпфирование является критическим (все колебания должны исчезнуть).
jointDef.frequencyHz = 4.0f; jointDef.dampingRatio = 0.5f;
CreateJoint возвращает b2Joint(соединение создано), но это не проблема... Я обнаружил проблему. На самом деле я устанавливал местную опорную точку как
distance_joint.localAnchorA = new b2Vec2(0, 0);
distance_joint.localAnchorB = new b2Vec2(0, 0);
скорее я должен создать опорную точку в мире, как
distance_joint.anchorPoint1.Set(0.0, 0.0);
distance_joint.anchorPoint2.Set(0.0, 0.0);
Теперь сустав создан правильно. Еще одна проблема... так как я пытаюсь реализовать эффект пружины, я пытаюсь установить опорную точку в середине второго тела, но я не достигаю успеха.
любая идея..
Спасибо