У меня задача в каждый момент времени направлять скорость движения объекта по заданному углу
Body body; // динамическое тело
Я вижу два варианта это сделать:
Эти функции вызываются на каждом шаге моделирования
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
к примеру)?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Необходимо, чтобы определенный список текста циклично менялся аккуратной анимацией по времениСейчас вот такая картина, из-за чего список...
У меня на Landing'e блок типа хедера находится слева, и он должен продолжаться на весь landingУже пробовал по разному, но кроме фиксированной высоты...