Java Libgdx - Box2d setTransform несколько тел с суставами
У меня есть группа тела, соединенная с некоторыми суставами (колесное соединение, призматическое соединение, вращательное соединение)
Я пытаюсь переместить эту группу тела в положение с помощью метода setTransform
Я решил переместить только одно тело в положение, а другие тела должны следовать из-за суставов.
Я получаю странный результат, тела начинают катиться, двигаться в никуда, настоящий странный результат, вот какое-то изображение, чтобы объяснить:
Как переместить несколько тел, прикрепленных к суставам, в положение с помощью setTransform?
Примечание: нет препятствий через объект, из точки А в точку Б (движется)
1 ответ
Из ссылки box2d setTransform():
Установите положение начала и поворота тела. Это разрывает любые контакты и пробуждает другие органы. Манипулирование преобразованием тела может вызвать нефизическое поведение.
Я думаю, что проблема заключается только в механизме, который вы пытаетесь использовать для перемещения тела, а setTransform - неправильный путь.
Вместо этого рассмотрите возможность использования
void com.badlogic.gdx.physics.box2d.Body.setLinearVelocity(Vector2 v)
Вы можете вычислить v как вычитание конечной точки и начальной точки тела. Вы должны справиться с останавливающим телом (обнуляя его скорость), когда оно достигнет цели.
Обратите внимание, что setLinearVelocity не зависит от вашей гравитации
Второе решение - просто установить Transform для всех тел в этой "объединенной группе". Вы можете перебирать тела и перемещать их в зависимости от их начальной позиции и целевого вектора
for(Body body : jointGroup)
{
body.setTransform(body.getPosition.x - someX, ...)
...