Box2d: mousejoint без инерционной задержки

Я использую mousejoint для перетаскивания тел в box2d, но он вызывает инерционную задержку.

Это существует какой-либо способ перетащить тело мгновенно?

10
задан Ricibald 17 December 2009 в 15:10
поделиться

2 ответа

Решение состоит в том, чтобы настроить свойства frequencyHz и dampingRatio в вашем b2MouseJointDef.

Например:

b2MouseJointDef md;
md.body1 = _groundBody;
md.body2 = body;
md.target = p;
md.maxForce = 10000.0f * body->GetMass();
md.dampingRatio = 0;
md.frequencyHz = 100;
_world->CreateJoint(&md);
17
ответ дан 3 December 2019 в 20:42
поделиться

Я пытаюсь реализовать игру в pong-стиле в библиотеке Processing/Box2d и ожидаю, что у меня будет та же проблема. Единственное, что приходит на ум, это поддерживать скрытый объект в мире Box2d, который работает с суставами обычным способом, а затем нарисовать виртуальный объект, который следует за мышью без задержки кадра. Этого может быть достаточно, чтобы обмануть пользователя.

С другой стороны, Box2d не является строгой симуляцией физики и допускает некоторое прощение в перекрывающихся объектах, поэтому действительно кажется, что должен быть какой-то способ сделать это.

1
ответ дан 3 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: