Основано на документах и учебниках box2d, найденных в Интернете (лучше всего здесь http://www.iforce2d.net/b2dtut/collision-anatomy) Я предполагаю, что обработчик события столкновения beginContact должен происходить только один раз за столкновение.Box2d collision beginContant встречается более одного раза
Но я переживаю, что в некоторых случаях (я не мог сузить это до какого-то конкретного до сих пор) beginContact вызывается более одного раза.
Особый пример:
1st fixture is a box, belongs to static body and is a sensor
2nd fixture (which is also player body in 2d game I'm building)
is a polygon, belongs to dynamic body and is not a sensor.
Both are large enough so in debug mode it is absolutely clear
when these fixtures start to overlap and when they part.
Result is - while player body fixture passes through static sensor,
beginContact is called 3-4 times or more while fixtures keep oveplapping.
Velocity is moderate (fixtures keep overlapping for a whole second and more).
ли я пропустить что-то в документации? Может быть, это возможно?
Да, эти два являются единственными светильниками вокруг - это игрок и бонус, висящий в воздухе. Я узнал, что проблема связана с fixtureShape - я использовал ChainShape, чтобы получить преимущество от вершин-призраков (кстати, спасибо за отличный учебник по этим), и это, кажется, создает beginContact для каждой цепочки. Я добавил простой элемент PolygonShape к корпусу плеера, и он работает топор - один beginContact call на столкновение. – Lez77