Box2d RopeJoint错误-修复或替代解决方案?

问题描述 投票:3回答:1

我想做的是制作绳子游戏。在下面可以找到电影的外观。

https://youtu.be/QTULCGNF70I

我正在使用RopeJoint,并且正在减小maxLength以便能够加速。一切似乎都很好,但问题出在气泡之类的球上。我意识到缩短绳索不会增加球的速度。例如,如果我将绳索完全垂直投掷,而唯一的“力”来自缩短绳索,则速度为0,0。好像,人体运动不是模拟的吗?

我放开绳索之后,动力就消失了。气泡可以飞,但是忽略绳索缩短的因素。

我不知道你是否明白我的意思。这部电影应该更好地说明它。

我尝试过的解决方法:

  • [好的主意是使用prismaticJoint,但是旋转是固定的,所以它不起作用。我无法摇摆
  • 另一个想法是使用wheelJoint并利用它的频率参数。但是,这里存在绳子变成橡胶的问题。摆动感不好,可以延伸超过初始长度时应该总是只缩短。

我看到的解决方案,但它们不可用

  • 防止绳索缩短的身体动量的RopeJoint
  • 没有固定旋转的PrismaticJoint
  • WheelJoint,可以设置最大长度或使用最大长度而不是静止位置来创建绳索。
libgdx box2d
1个回答
0
投票

我想与您分享我最终的处理方式。

  1. 通过设置速度和角度,我拍摄了一个“ ropeBullet”,它是一个小的圆形box2d主体。我在子弹和球之间绘制了绳索图形。
  2. 当子弹到达墙壁时,我从contactListener得到接触点
  3. 我根据子弹的中心和接触点,通过revoluteJoint连接子弹和墙壁。由于这种解决方案,子弹可能会旋转,并可能在绳索上摆动。
  4. 在绳索的另一端,我创建了类似圆形物体的“转子”。它始终与球体相连,并通过另一个revoluteJoint连接到两个中心。它允许球自由旋转。
  5. 现在,我将ropulBullet和转子与prismaticJoint连接。通过计算轴之间的向量并将其标准化来设置轴。
  6. 我根据需要设置了棱柱形关节极限,电机速度和最大力。
  7. 球被世界的引力所感动,所以我不得不再做一个技巧来使它令人满意。我描述了box2d reddit上的问题和技巧,因此我将其参考:https://www.reddit.com/r/box2d/comments/gpdmoc/prismatic_joint_behaves_like_rubber/
© www.soinside.com 2019 - 2024. All rights reserved.