Box2D столкновение между статическими / динамическими телами, вызывающими утверждение - PullRequest
0 голосов
/ 07 июля 2011

Я впервые использую BOX2D на iPhone.В целом это было довольно хорошо, но я постоянно получаю утверждение в строке в ContactManager всякий раз, когда создаю сцену, показывающую и статические, и динамические тела.Точная строка ...

b2Assert(bodyA->m_type == b2_dynamicBody || bodyB->m_type == b2_dynamicBody);

Который находится в пустоте b2ContactManager :: Collide ().Кажется, это говорит о том, что он утверждает, когда сталкиваются два объекта, один из которых не является динамическим ... что не имеет никакого смысла.Конечно, предполагается, что динамические тела сталкиваются со статическими!

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

Кто-нибудь может мне помочь?Это похоже на одну из тех «действительно очевидных» проблем!

Ответы [ 2 ]

0 голосов
/ 07 июля 2011

Проблема в том, что сталкиваются два нединамических тела.Это неверно, потому что кинематические и статические тела не должны сталкиваться друг с другом.Такое столкновение игнорируется box2d.Но это происходит в вашей ситуации.Пожалуйста, предоставьте некоторый код инициализации Phys для более подробного ответа, почему это происходит.

0 голосов
/ 07 июля 2011

Вы перемещаете свои статические тела после того, как они созданы?(Помимо установки их исходного положения?): У меня были проблемы с перемещением статических тел, вызывающие странные проблемы (не утверждения, а странное поведение при столкновении), а затем обнаружил, что Box различает статические и кинематические тела (b2_staticBody и b2_kinematicBody, соответственно)

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

Возможно, это не ваша проблема (поскольку вы подразумеваете, что это сразу после создания статических тел), но, возможно, стоит проверить, я полагаю + Если вы относительно новичок вКоробка, возможно, вы уже видели это в руководстве.Это стало для меня новостью, потому что я начал использовать Box много лет назад (чтобы внезапно появилось понятие кинематики)

...