Box2d: соединение мышью без инерционной задержки - PullRequest
10 голосов
/ 17 декабря 2009

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

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

Ответы [ 2 ]

17 голосов
/ 03 февраля 2010

Решение состоит в том, чтобы настроить свойства частоту Гц и коэффициент затухания в вашем 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);
1 голос
/ 03 февраля 2010

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

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

...