Краткий вопрос о приемнике контактов Box2D, фильтре и соединениях - PullRequest
2 голосов
/ 29 июля 2011

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

  1. В моем методе обратного вызова beginContact яЯ создаю новый Джойнт и добавляю его в мой мир.Однако, когда я делаю это, я получаю ошибку во время выполнения.Это потому, что в этих методах обратного вызова нельзя создавать и добавлять новые объекты в мир?

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

1 Ответ

2 голосов
/ 30 июля 2011

Вы не можете создавать соединения в методе beginContact, потому что мир находится в состоянии симуляции. Вы должны сохранить все действия, которые вы хотите выполнить (например, создать соединения), в каком-либо массиве или любой другой структуре, и после того, как Step метод b2World завершен для выполнения действий, связанных с миром.

Если вы хотите много сварных соединений, у вас будут проблемы при создании сложной конструкции. Симуляция не будет хорошей. Лучше создать приспособление на одном из столкнувшихся тел и удалить другое.

...