绳索使用Revolute关节断裂

时间:2013-07-04 06:17:08

标签: iphone cocos2d-iphone box2d-iphone

我正在研究绳索物理。我使用Revolute关节实现了一根绳子。

我正在制作连接动态物体的绳索(通过b2RevoluteJoints)。我成功创建了它。现在我还在绳子的末端附加了一个动态物体。 &安培;我用这个身体向下释放我的绳子,现在不知怎的,我的动态绳体之间的关节被伸展了。然后休息,我希望我的绳子看起来更顺畅。

我的关节是这样的

b2RevoluteJointDef revoluteJointDef;
revoluteJointDef.bodyA = referenceBody;//provided by testbed
revoluteJointDef.bodyB = lastLink;
revoluteJointDef.localAnchorA = startPos;//world coords, because m_groundBody is at (0,0)
revoluteJointDef.localAnchorB.Set(0,0);//center of circle
world->CreateJoint( &revoluteJointDef );


revoluteJointDef.bodyA = lastLink;//the last added link of the chain
revoluteJointDef.bodyB = chainBase;
revoluteJointDef.localAnchorA.Set(0,linkWidth);//the regular position for chain link joints
revoluteJointDef.localAnchorB.Set(0,linkWidth);//a little in from the edge of the circle
world->CreateJoint( &revoluteJointDef );

有没有办法制作强壮的关节?

我们可以通过研究身体的密度来实现这一目标吗?世界的引力??

请帮助.....

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题(但是在绳子末端摆动一个较大物体的离心力)。为了解决链条/绳索断裂的问题,你需要让较大的物体不那么密集,但这会引发一个问题 - 现在你的'#34;更大"动态对象由绳索正确保持,但不会与世界其他地方相互作用。

为了解决这个问题,我做了一些有点hacky并且实现了我自己的碰撞处理程序,它会对我的较大物体碰撞的物体施加碰撞冲动,好像它更重。所以......

  • 使你的物体在绳索末端的密度非常低,以便绳索保持
  • 为您的对象实现一些补充碰撞处理程序,使其看起来像对象对其他对象更密集(sensor = true也可能对此有帮助)。

这不是严格意义上的物理模拟器,因为我们应该能够设置我们的参数并让规则处理所有事情 - 基本上如果旋转关节是牢不可破的话会很好。