我正在使用mousejoint拖动box2d中的物体,但它会导致惯性延迟。
是否存在瞬间拖动身体的任何方式?
答案 0 :(得分:17)
解决方法是调整b2MouseJointDef中的属性frequencyHz和dampingRatio。
例如:
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 :(得分:1)
我正在尝试在Processing / Box2d库中实现一个乒乓式游戏,我预计会遇到同样的问题。我想到的一件事是在Box2d世界中维护一个隐藏的对象,一个用传统方式操作关节的对象,然后绘制一个跟随鼠标的虚拟对象,没有帧延迟。这可能足以欺骗用户。
另一方面,Box2d不是一个严格的物理模拟,并允许重叠对象的一些宽恕,所以看起来应该有办法实现这一点。