Вращающиеся грани Кубика Рубика C#
Я искал в Интернете несколько дней, и я не могу найти ответ, который я могу понять достаточно хорошо, чтобы вращать мой кубик Рубика.
Я сделал свою собственную 3D-модель, используя Blender of Rubik's Cube, и импортировал ее в Unity, которую я собираюсь использовать для вращения граней.
Но я просто не понимаю математику, связанную с вращением кубика Рубика. Должен ли я использовать матрицы? Если да, то как мне соединить все это вместе, чтобы оно работало?
Я могу повернуть одну сторону вокруг, сгруппировав кирпичи по граням, но в тот момент, когда вы перевернете следующую грань, это полностью разрушит другую.
Большое спасибо!
1 ответ
Моя идея: хранить каждый из 26 блоков отдельно GameObject
объекты (8 углов, 12 ребер, 6 центров), с началом каждого блока в центре куба. Отдельно вы отслеживаете, какой блок в данный момент находится в кубе, например, в трехмерном массиве.
Затем, когда лицо нужно повернуть:
- Узнайте, какие блоки принадлежат лицу.
- Вращайте каждый из этих блоков вокруг оси вращения (через середину куба), используя функцию обычного вращения Unity.
- Обновите информацию о том, какие блоки находятся где.