Подтвердить что ты не робот

Как обнаружить столкновение, но не столкнуться в box2d?

Как определить, сталкивается ли тело с другим телом, но не реагирует на это столкновение.

По умолчанию я - обнаружение столкновения и тел сталкиваются.

Если я устанавливаю фильтр fixtureDef - тела не сталкиваются, но я не могу обнаружить столкновение.

Помогите пожалуйста!

4b9b3361

Ответ 1

Если прибор никогда не должен сталкиваться с чем-либо, вы можете сделать его датчиком. Если вам нужно столкнуться с некоторыми вещами, но не с другими, вы можете сделать контакт- > SetEnabled (false) в PreSolve слушателя столкновения, в зависимости от того, с чем он столкнулся.

Ответ 2

Что вы хотите здесь, это датчик на теле. Из руководства box2d:

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

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

Датчики не создают контактные точки. Существует два способа получить состояние датчика:

  • b2Contact:: IsTouching
  • b2ContactListener:: BeginContact и EndContact

Вы можете установить прибор в качестве датчика, а затем записать его в свой прослушиватель контактов. Если у прибора есть флаг датчика, установленный в true, он предоставит данные о столкновении без физического имитации столкновения (т.е. Позволит вам протестировать перекрытие между ним любого другого встречного приспособления.)

Это полезное руководство по началу работы с датчиками учебник по датчику Ray Wenderlich