Box2d:没有惯性延迟的mousejoint

时间:2009-12-17 15:10:45

标签: mouse drag delay box2d

我正在使用mousejoint拖动box2d中的物体,但它会导致惯性延迟。

是否存在瞬间拖动身体的任何方式?

2 个答案:

答案 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不是一个严格的物理模拟,并允许重叠对象的一些宽恕,所以看起来应该有办法实现这一点。