【问题标题】:Rope breaks using Revolute joints使用旋转接头的绳索断裂
【发布时间】:2013-07-04 06:17:08
【问题描述】:

我正在研究绳索物理。我已经使用旋转关节实现了一根绳子..

我正在制作连接动态体的绳索(通过 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 );

有什么方法可以让关节变得结实吗??

我们可以通过研究物体的密度和世界的重力来实现这一点吗??

请帮忙.....

【问题讨论】:

  • 大概有多少个旋转关节?
  • hmmmm 大约 30 个旋转接头在一根绳索和 2 根绳索 r 那里.. 两条绳索的一端在地体(地的上边缘),另一端连接着一个悬挂在世界上的动态 b2body。
  • 绳索末端的尸体有多大?

标签: iphone cocos2d-iphone box2d-iphone


【解决方案1】:

我也遇到过类似的问题(但在绳子末端摆动一个更大的物体时会产生离心力)。要解决断链/绳索的问题,您需要使较大的物体不那么密集,但这会带来一个连锁问题 - 现在您的“较大”动态物体被绳索正确固定但不与其余物体相互作用世界应有的样子。

为了解决这个问题,我做了一些小技巧,并实现了我自己的碰撞处理程序,它将对我的较大对象碰撞的物体施加碰撞脉冲,就好像它更重一样。所以...

  • 使绳子末端的物体密度非常低,以便绳子固定
  • 为您的对象实施一些补充碰撞处理程序,以使您的对象看起来比其他对象更密集(sensor = true 也可能对此有所帮助)。

这并不完全符合物理模拟器的精神,因为我们应该能够设置参数并让规则处理一切 - 基本上,如果旋转关节牢不可破,那就太好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2017-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多