Вращающиеся грани Кубика Рубика C#

Я искал в Интернете несколько дней, и я не могу найти ответ, который я могу понять достаточно хорошо, чтобы вращать мой кубик Рубика.

Я сделал свою собственную 3D-модель, используя Blender of Rubik's Cube, и импортировал ее в Unity, которую я собираюсь использовать для вращения граней.

Но я просто не понимаю математику, связанную с вращением кубика Рубика. Должен ли я использовать матрицы? Если да, то как мне соединить все это вместе, чтобы оно работало?

Я могу повернуть одну сторону вокруг, сгруппировав кирпичи по граням, но в тот момент, когда вы перевернете следующую грань, это полностью разрушит другую.

Большое спасибо!

1 ответ

Решение

Моя идея: хранить каждый из 26 блоков отдельно GameObject объекты (8 углов, 12 ребер, 6 центров), с началом каждого блока в центре куба. Отдельно вы отслеживаете, какой блок в данный момент находится в кубе, например, в трехмерном массиве.

Затем, когда лицо нужно повернуть:

  • Узнайте, какие блоки принадлежат лицу.
  • Вращайте каждый из этих блоков вокруг оси вращения (через середину куба), используя функцию обычного вращения Unity.
  • Обновите информацию о том, какие блоки находятся где.
Другие вопросы по тегам