Это не совсем ответ на ваш вопрос, чтобы создать идеальное пиксельное столкновение, но я хочу сказать, что плохая идея - делать приборы в зависимости от изображений.
- Box2Dне поддерживает вогнутые фиксаторы.
- Box2D (оригинальная версия на C ++, я не знаю, как это работает в JBox2D) имеет ограничение в 8 вершин на полигон.
Из-за этих двух причин вы можете подумать о создании одного квадратного прибора на пиксель, но это будет очень дорого во время обработки.
В моей почти законченной игре яопределение моих приборов с помощью редактора уровней.
Вот выдержка из одного из моих уровней (xml):
<body id="STONE" depth="13" angle="0.000000" type="static" x="7.939437" y="0.750494" tags="" >
<image id="stone_img" img="IMG_STONE" depth="0" x="-0.362081" y="0.526663" w="1.400000" h="1.600000" angle="0.000000" colorize="ffffffff"/>
<fixture id="" density="1.000000" friction="0.300000" restitution="0.300000" sensor="false" shape="rect" x="-0.188671" y="0.806253" w="1.000000" h="2.200000" angle="0.545597" tags="" />
<fixture id="" density="1.000000" friction="0.300000" restitution="0.300000" sensor="false" shape="rect" x="0.412080" y="-0.097607" w="1.000000" h="2.200000" angle="0.000000" tags="" />
</body>
Я думаю, что это лучший способ работы с Box2D.
Надеюсь, этовдохновляет тебя: D