2014-01-05 5 views
3

Я создаю нисходящую 2-мерную игру на основе плитки и имею некоторые проблемы с настройкой box2d для работы определенным образом.box2d, динамические тела, которые не могут толкать друг друга

В принципе, то, что мне нужно, чтобы все Box2D тела следовать определенному набору правил: 1) они не перекрываются 2) они не отталкивают друг друг 3), они по-прежнему сталкиваются и обеспечивают коллизии списков контактов

Я установил силу тяжести на 0 и двигаю свои тела только с помощью setLinearVelocity, потому что мне нужно, чтобы они двигались с постоянной скоростью и без какого-либо эффекта инерции.

Похоже, мне нужно статическое тело, но оно может быть перемещено вручную.

Я думал, что могу использовать кинематические тела, но оказалось, что они перекрываются друг с другом и не имеют списков контактов.

Есть ли способ сделать твердые тела, которые могут столкнуться, но не могут толкать друг друга?

ответ

0

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

+0

= \ Если я задал массы бесконечности - они начинают действовать точно так же, как кинематические тела (с перекрытием и т. Д.). И 0 тоже не помогает. –

+0

hmm. они могут действовать как кинематические тела, но они не потеряли своих списков контактов. так что я просто должен остановить тела при контакте с другими телами, и, возможно, этого будет достаточно –

0

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

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

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

Имейте в виду, что Box2D действительно пытается воспроизвести физику, которую мы видим в реальном мире, и то, что вы просите здесь, совсем не реалистично. Вероятно, вы увидите некоторое ОЧЕНЬ странное поведение, особенно если вы попытаетесь собрать эти тела вместе, хотя они следуют вашим правилам. Однако для сценария сверху вниз, когда нагромождение тел не требуется, это может быть нормально.

Смежные вопросы