Формы объектов ничем не ограничены или это длинный фиксированный список объектов? Если второе, то для каждого объекта из списка задавать контрольные точки, для каждой из которых расчитывать момент сил(относительно центра масс объекта) в однородном магнитном поле. Складываете моменты и получаете "вращение". А поступательное движение - это просто сила, приложенная к центру масс.
Тут, как мне видится, самая большая сложность - это удачный выбор контрольных точек. Для предопределенного списка объектов взял бутылочку пива и спокойненько выбираешь.
Для рандомных объектов алгоритм выбора точек программным способом мне представляется уже гораздо более сложным.
А физику я подзабыл, поэтому может где и закралась ошибка.
1) Нет, объекты заранее не известны и присвоить им какие-то данные не удается
2) Нет никакой необходимости самому рассчитывать моменты, достаточно N раз вызвать метод движка applyForce где указать вектор силы и точку его приложения. Другое дело - непонятно откуда взять эти N векторов и каких.
3) Взаимодействие центр-центр совсем неплохо и оно тоже есть (как одна из опций). Но вращения с ним не получается, т.к. сила приложенная к центру ничего не вращает. Простой пример: чайник отталкивается сферой, и ожидается что он должен оттолкнуться "носиком", ну и как-то улетать вращаясь. Но центр-центр этого сделать не может, и это очень заметно.
У меня получилось 8 типов сил, взаимодействие поверхностей - самый сложный вариант. Пока парю остальные 7 и подтягиваю UI. Скоро вернусь к поверхностям, будут результаты - отпишусь