Box2d RopeJoint 错误 - 修复或替代解决方案?
Box2d RopeJoint bug - fix or alternative solution?
我想做的是制作绳索游戏。您可以在下面找到一部电影现在的样子。
我正在使用 RopeJoint 并且我正在减少每帧的 maxLength 以便能够加速。一切似乎都很好,但问题出现在气泡类球上。我意识到缩短绳索不会增加球的速度。例如,如果我将绳子完全垂直抛出,而唯一的 "force" 是来自缩短绳子,则速度为 0,0。好像,body运动不是模拟的?
松开绳子后,动力就消失了。泡泡可以飞,但忽略绳子变短的因素
不知道你明白我的意思没有。电影应该更清楚。
我尝试过的解决方法:
- 好主意是使用 prismaticJoint,但是旋转是固定的,所以它
不起作用。我不能挥杆
- 另一个想法是使用 wheelJoint 并利用它的频率
范围。但是这里有一个问题,绳子变成了橡胶。
摆动感不好,当它能伸出超过初始长度时,它
应该总是只缩短。
我看到了解决方案,但没有可用的
- RopeJoint 保持 body 绳索缩短的动量
- 无固定旋转的 PrismaticJoint
- WheelJoint 可以设置最大长度或创建最大长度的绳索,而不是静止位置。
我想和你分享一下我最后是如何处理的。
- 我通过设置它的速度和角度来拍摄一个 "ropeBullet" 这是一个小的圆形 box2d 物体。我在子弹和球之间渲染了一个绳索图形。
- 当子弹到达墙壁时,我从 contactListener 获取接触点
- 我根据子弹中心和接触点用revoluteJoint连接子弹和墙。得益于这样的解决方案,子弹可以在绳子上旋转和摆动。
- 在绳子的另一端我创造了"rotor"这是一个类似的圆形体。它始终通过另一个 revoluteJoint 连接到球体到两个中心。它允许球自由旋转。
- 现在我用 prismaticJoint 连接 ropeBullet 和转子。轴 i 通过计算它们之间的向量并对其进行归一化来设置。
- 我根据需要设置了棱柱关节限制,电机速度和最大力。
- 这个球被世界的引力所触动,所以我不得不再做一个让它满意的技巧。我在 box2d reddit 上描述了问题和技巧,所以我参考了它:https://www.reddit.com/r/box2d/comments/gpdmoc/prismatic_joint_behaves_like_rubber/
我想做的是制作绳索游戏。您可以在下面找到一部电影现在的样子。
我正在使用 RopeJoint 并且我正在减少每帧的 maxLength 以便能够加速。一切似乎都很好,但问题出现在气泡类球上。我意识到缩短绳索不会增加球的速度。例如,如果我将绳子完全垂直抛出,而唯一的 "force" 是来自缩短绳子,则速度为 0,0。好像,body运动不是模拟的?
松开绳子后,动力就消失了。泡泡可以飞,但忽略绳子变短的因素
不知道你明白我的意思没有。电影应该更清楚。
我尝试过的解决方法:
- 好主意是使用 prismaticJoint,但是旋转是固定的,所以它 不起作用。我不能挥杆
- 另一个想法是使用 wheelJoint 并利用它的频率 范围。但是这里有一个问题,绳子变成了橡胶。 摆动感不好,当它能伸出超过初始长度时,它 应该总是只缩短。
我看到了解决方案,但没有可用的
- RopeJoint 保持 body 绳索缩短的动量
- 无固定旋转的 PrismaticJoint
- WheelJoint 可以设置最大长度或创建最大长度的绳索,而不是静止位置。
我想和你分享一下我最后是如何处理的。
- 我通过设置它的速度和角度来拍摄一个 "ropeBullet" 这是一个小的圆形 box2d 物体。我在子弹和球之间渲染了一个绳索图形。
- 当子弹到达墙壁时,我从 contactListener 获取接触点
- 我根据子弹中心和接触点用revoluteJoint连接子弹和墙。得益于这样的解决方案,子弹可以在绳子上旋转和摆动。
- 在绳子的另一端我创造了"rotor"这是一个类似的圆形体。它始终通过另一个 revoluteJoint 连接到球体到两个中心。它允许球自由旋转。
- 现在我用 prismaticJoint 连接 ropeBullet 和转子。轴 i 通过计算它们之间的向量并对其进行归一化来设置。
- 我根据需要设置了棱柱关节限制,电机速度和最大力。
- 这个球被世界的引力所触动,所以我不得不再做一个让它满意的技巧。我在 box2d reddit 上描述了问题和技巧,所以我参考了它:https://www.reddit.com/r/box2d/comments/gpdmoc/prismatic_joint_behaves_like_rubber/