Box2d applyLinearImpulse и setLinearVelosity

329
02 мая 2017, 04:56

У меня задача в каждый момент времени направлять скорость движения объекта по заданному углу

Body body; // динамическое тело

Я вижу два варианта это сделать:

  1. setLinearVelosity - сразу задает нужную скорость в нужном направлении
  2. applyLinearImpulse - применяет импульс к телу, что в приводит к изменению скорости

Эти функции вызываются на каждом шаге моделирования

body.setLinearVelocity(Helper.getVec(config.getLinearVelosity(),
                       body.getAngle()));

или

body.applyLinearImpulse(Helper.getVec(config.getLinearVelosity() * body.getMass(),
                        body.getAngle()), body.getPosition());

По моей логике, оба метода должны работать плюс-минус одинаково. Однако, моя логика не совпадает с логикой box2d. Вариант с импульсом устанавливает скорость где-то раза в два больше, чем вариант с установкой скорости напрямую (config.getLinearVelosity() всегда для одного и того же тела возвращает одно и то же значение).

Кроме того, если есть два абсолютно одинаковых объекта, но одному из них config.getLinearVelosity() возвращает скорость V, а второму 1.5*V, то в случае установки скорости напрямую тела будут двигаться с правильными различными скоростями, а в случае применения импульса они будут двигаться с одинаковой скоростью.

Однако, при применении импульса, тела во время столкновения ведут себя куда более реалистично, чем при установке скорости.

А их этого вопрос - почему такие различия в работе этих двух методов и как заставить импульс правильно устанавливать различные скорости (V и 1.5*V к примеру)?

READ ALSO
Json распарсить

Json распарсить

Возник вопрос насчет разбора JSONПока что я получаю данные в виде строки

290
jQuery Masked Input и vue модальное окно с input

jQuery Masked Input и vue модальное окно с input

Есть два input в vue модальном окне

382
Цикличная смена текста с анимацией (jQuery)

Цикличная смена текста с анимацией (jQuery)

Необходимо, чтобы определенный список текста циклично менялся аккуратной анимацией по времениСейчас вот такая картина, из-за чего список...

406
Растянуть блок на всю высоту Landing page

Растянуть блок на всю высоту Landing page

У меня на Landing'e блок типа хедера находится слева, и он должен продолжаться на весь landingУже пробовал по разному, но кроме фиксированной высоты...

347