мне кажется оптимально все связи хранить не только в Box2d, но ещё и в отдельной памяти, к примеру хранить список смежных вершин(вроде через Box2D можно только перебрать весь список связей, а это не очень удобно). Тогда достаточно легко найти все связанные объекты(нужную компоненту связности графа) с помощью
алгоритма поиска в ширину.