#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
Комментариев нет:
Отправить комментарий