b2RevoluteJoint Строгость - PullRequest
       5

b2RevoluteJoint Строгость

2 голосов
/ 12 февраля 2012

Основным игроком в моей игре является двуногий, соединенный вместе с помощью соединений b2Revolute.По большей части это работает хорошо, поскольку я могу ограничить вращение каждого сустава, чтобы сделать несколько реалистичные двуногие.Но когда к двуногому прикладывают большое усилие, его части растягиваются, и это выглядит нелепо.Есть ли способ ограничить упругость сустава?Другая проблема состоит в том, что каждый сустав не ограничивает вращение полностью.Это заканчивается в ногах, качающихся почти на 360 градусов.Есть ли способ установить, насколько строг этот сустав?Я думал об использовании b2DistanceJoint, но это не позволяет мне ограничивать вращение.

1 Ответ

0 голосов
/ 14 февраля 2012

В Box2D, импульсы рассчитаны для перемещения двух тел, соединенных таким образом, что совместные ограничения выполнены (например, для книзу суставов ограничений являются точкой привязки и пределы угла). Эти импульсы распределяются между двумя телами, так что учитывается влияние их массы.

Два тела одинаковой массы будут двигаться одинаково, чтобы исправить совместное ограничение. Когда тела имеют разные массы, более легкое тело имеет тенденцию «подчиняться» более тяжелому телу и двигаться больше, чтобы исправить ограничение, чем тяжелое тело, как если бы среди них был какой-то «порядок клевания». Проблемы возникают, когда более легкое тело соединяется с двумя более тяжелыми телами и «клюет» в обоих направлениях, что почти никогда не приводит к одновременному выполнению ограничений обоих суставов.

Один из способов избежать этого состоит в том, чтобы убедиться, что этот порядок клевывания идет только в одну сторону, например. туловище вашего двуногого - самое тяжелое тело, и все связанные тела становятся светлее по мере удаления от туловища. Это работает до тех пор, пока он не схватит что-то более тяжелое, чем тело, на конце своей руки, и в этот момент порядок клевания становится противоречивым.

Полагаю, вы пытаетесь заставить двуногого схватить что-нибудь тяжелое и потянуть, но не растянуть? Вы можете сделать это, соединяя тяжелые вещи вместе с помощью веревочного соединения, которое устанавливает максимальное расстояние, на которое две точки могут быть разнесены. Например, если он оказывается в какой-то ужасной ситуации, например, когда он висит одной рукой на краю обрыва, а его любимый слон, висящий под ним, схвачен другой рукой, вы можете соединить скалу и слона вместе с помощью веревочного соединения. до максимального расстояния между его руками. Это позволило бы ему казаться суперсильным (что он должен был бы даже попытаться сделать в первую очередь), потому что приказ клевания идет прямо со скалы к слону и полностью пропускает его.

...