Я использую mousejoint для перетаскивания тел в box2d, но это вызывает инерционную задержку.
Существует ли способ мгновенно перетащить тело?
Я использую mousejoint для перетаскивания тел в box2d, но это вызывает инерционную задержку.
Существует ли способ мгновенно перетащить тело?
Решение состоит в том, чтобы настроить свойства 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);
Я пытаюсь реализовать игру в стиле понг в библиотеке Processing/Box2d, и я ожидаю, что у меня будет такая же проблема. Одна вещь, которая приходит на ум, — это поддерживать скрытый объект в мире Box2d, который работает с суставами обычным способом, а затем рисовать виртуальный объект, который следует за мышью без задержки кадра. Этого может быть достаточно, чтобы обмануть пользователя.
С другой стороны, Box2d не является строгой симуляцией физики и допускает некоторое снисхождение к перекрывающимся объектам, поэтому действительно кажется, что должен быть способ сделать это.