Кубик Рубика

Программирование на Юнити.

Кубик Рубика

Сообщение Neon 29 дек 2016, 17:12

Здравствуйте , при написание кубика Рубика столкнулся с проблемой. Задача определить куда пользователь хочет повернуть грань . Сам кубик вращаю таким способом
Синтаксис:
Используется csharp
float rotSpeed = 7;
float rotX = Input.GetAxis("Mouse X") * rotSpeed * Mathf.Deg2Rad;
float rotY = Input.GetAxis("Mouse Y") * rotSpeed * Mathf.Deg2Rad;
cubo.transform.RotateAround(Vector3.up, rotX);
cubo.transform.RotateAround(Vector3.right, rotY);
 

После вращения кубик может оказаться в любом положение, что усложняет задачу определения стороны поворота.
Изображение
Сам метод поворота уже готов но вот проворачивает он не в те стороны.
Как делал я , определял точку начального клика на определенном кубике (через Input.MousePosition) и там где пользователь отжал, определял смещение и вращал в нужную сторону грань. Но данный метод не подходит только потому, что во время вращения кубика, он может быть перевернут и получится так, что пользователь будет крутить грань вверх, а программа будет крутить грань в низ (Например если посмотреть на кубик так ( [6] ) Input.mous верх и низ будет определять верно, а если его перевернешь кубик ( [9] ), то уже верх это будет вниз а низ вверх ) Да и верхние и нижние грани имеют линии поворота наклонные от прямых координат на кране x y.
Отсюда вытекает,что способ не подходит.
Не подскажите какие есть идеи у вас, для реализации этой задачи?
Neon
UNец
 
Сообщения: 7
Зарегистрирован: 02 дек 2016, 10:47

Re: Кубик Рубика

Сообщение Paul Siberdt 29 дек 2016, 17:20

Вам надо преобразовать полученное направление врещения в локальные координаты кубика.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Кубик Рубика

Сообщение BenjaminMoore 31 дек 2016, 14:49

http://www.unity3d.ru/distribution/view ... 91#p130591

посмотри тут, думаю найдешь для себя необходимые решения
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore

Re: Кубик Рубика

Сообщение Neon 07 фев 2017, 18:32

Paul Siberdt писал(а):Вам надо преобразовать полученное направление врещения в локальные координаты кубика.

Здравствуйте, я все насчет кубика рубика . Наконец в учебе появился перерыв и у меня есть время на доделывание кубика. Я написал скрипт на генерацию кубика рубика N*N*N размерности, пользователь выбирает значение такой кубик ему и строиться . В связи с этим переделал скрипт чтобы вращался не кубик а камера вокруг него
Синтаксис:
Используется csharp
 _sensitivity = 9;
            _x = Input.GetAxis("Mouse X") * _sensitivity;
            _y = -Input.GetAxis("Mouse Y") * _sensitivity;
            transform.RotateAround(new Vector3((N - 1) / 2, (N - 2) / 2, (N - 2) / 2), transform.up, _x);
            transform.RotateAround(new Vector3((N - 1) / 2, (N - 2) / 2, (N - 2) / 2), transform.right, _y);
Я так до сих пор и не смог решить вопрос с направлением поворота . (Если на куб смотреть с стартовой точки Верх это верх но если вращать камеру и стартовая грань окажется повернутой например на 9 градусов то вверх это будет уже в бок и точно тоже будет касаться и других сторон куба ) Можете пожалуйста поподробнее рассказать как решить проблему .
Neon
UNец
 
Сообщения: 7
Зарегистрирован: 02 дек 2016, 10:47


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7