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

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

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

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

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

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


person Nicholas    schedule 22.03.2013    source источник
comment
but the moment you turn the next face it would completely disrupt the other one - Разве не из-за этого так сложно собрать кубик Рубика?   -  person Bobson    schedule 22.03.2013
comment
Нет, никакого задания в колледже. Я учусь самостоятельно. @Bobson Извините, если это было неясно, я имел в виду, что это уничтожит лицо GameObject ... я знаю, как работает кубик Рубика: P   -  person Nicholas    schedule 22.03.2013
comment
@balls - А, теперь это имеет смысл.   -  person Bobson    schedule 22.03.2013
comment
привет @Nicholas - не могли бы вы отметить это старое QA, которое вы начали? благодаря.   -  person Fattie    schedule 18.04.2016
comment
@JoeBlow Привет, я совсем не против, однако я надеялся получить больше ответов, но они так и не пришли - думаю, подойдет только один здесь. :)   -  person Nicholas    schedule 20.04.2016


Ответы (1)


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

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

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