Ошибка Box2d RopeJoint - исправить или альтернативное решение? - PullRequest
2 голосов
/ 08 апреля 2020

То, что я пытаюсь сделать, это создать веревочную игру. Ниже вы можете найти mov ie как это выглядит сейчас.

https://youtu.be/QTULCGNF70I

Я использую RopeJoint и уменьшаю maxLength каждого кадра, чтобы иметь возможность чтобы ускорить. Кажется, все хорошо, но проблема возникает для пузырькового шара. Я понял, что укорочение веревки не увеличивает скорость шариков. Например, если я перекидываю веревку полностью вертикально, и единственная «сила» заключается в укорочении веревки, скорость равна 0,0. Похоже, движение тела не моделируется?

После того, как я позволю веревке go импульс теряется. Пузырь может взлететь, но фактор от укорачивания веревки игнорируется.

Я не знаю, понимаете ли вы, что я имею в виду. Mov ie должен уточнить это лучше.

Обходные пути, которые я пробовал:

  • Хорошей идеей было использовать prismaticJoint, но вращение фиксировано, поэтому не работает Я не мог качаться
  • Другая идея состояла в том, чтобы использовать wheelJoint и использовать его частотный параметр. Однако здесь есть проблема, что веревка становится резиновой. Чувство свинга плохо, когда оно может превышать начальную длину, оно всегда должно только укорачиваться.

Решения, которые я вижу, но они недоступны

  • RopeJoint, который удерживает импульс тела от укорачивания веревки
  • PrismaticJoint без фиксированного вращения
  • WheelJoint с возможностью установки максимальной длины или создания веревки с максимальной длиной, а не с положением покоя.
...