Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

Вибрация (дёргание) элементов в Box2D при использовании Apply Force

#javascript #разработка_игр #box2d


Делаю небольшую игру на JavaScript с использованием Box2D (хотя, думаю язык не важен,
так как движок одинаковый, насколько известно, и был экспортирован на JavaScript).

Соединяю несколько тел с помощью Distance Joint. При создания joint'а указываю frequencyHz
= 11 и dampingRatio = 0 (как я понял, чем меньше dampingRatio, тем быстрее элемент
вернется в исходное положение, то есть пружина будет жестче, что мне и надо). К каждому
телу применяю силу:

body.ApplyForce(new b2Vec2(0, 5800), body.GetWorldCenter())


Это мне нужно для того, чтобы у этих тел была больше гравитация, чем у других.

После создания нескольких элементов, они все начинаю дергаться, вибрировать, как
будто им что то не дает покоя, остановится и зафиксироваться в каком-то положении.

Пробовал «играться» с параметрами frequencyHz и dampingRatio у joint'а, и добивался,
чтобы конструкция не дергалась, но тогда конструкция кажется менее жесткой и более плавной.

Есть какое-то решение?

Я думаю что конструкция вибрирует из за того что, вес нескольких элементов, и сила
применимая к ним, тянут объект вниз, увеличивая длину сустава, при это сустав пытается
обратно сжимаьтся в исходное положение, из за этого получается вибрация, так как элемент
быстро двигается в разные стороны
    


Ответы

Ответ 1



При разработке игры сталкивался с похожей проблемой. Решением проблемы стало внедрение проверки на слишком маленькую векторную скорость, при достижении определенных диапазонов, я принудительно останавливал объект устанавливая скорость в 0

Комментариев нет:

Отправить комментарий