Форум программистов, компьютерный форум, киберфорум
Наши страницы
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
KostyaAnt
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 16
1

Кубик Рубика

04.12.2016, 12:15. Просмотров 677. Ответов 3
Метки нет (Все метки)

Здравствуйте подскажите пожалуйста , хочу попробовать сделать кубика Рубика , пока стоит задача -> определить куда хочет повернуть грань пользователь .
-------------
Как я пытался сделать , в каждый кубик добавляем бокс коллайдер , далее при нажатие пользователем на кубик он запоминает
Input.mouseposition.x и y например(0,0)
И далее читаем куда он повёл мышку этими же параметрами .
Например(8,1)
Какой параметр больше изменился (х или у )в ту сторону и хочет повернуть кубик пользователь
Все было хорошо и прекрасно , пока я не понял то , что кубик не будет стоять на месте, его всегда нужно будет проворачивать или проворачивать камеру , суть от этого не меняется взгляд на оси меняется( 3D он а не 2D ) и уже получается что он будет крутить влево а программа будет думать что это вверх, а отсюда вытекает , что метод -> такое себе.
Не подскажите какие идеи есть у вас на этот счёт
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2016, 12:15
Ответы с готовыми решениями:

Как создать кубик рубика в Unity?
Простой куб легко создаётся. Как сделать кубик рубика?

Не крутится кубик
Здравствуйте! Делаю всё, как показано в уроке, но у меня не работает. Создайте сцену и в ней куб....

Не отображается Кубик. в Unity
Внимание! Знатоки,вопрос! Не отоброжается кубик,с чем это может быть связанно в Unity?

Вывести кнопку при нажатии на кубик, затем скрыть
Привет Я начинаю осваивать Unity и у меня появилось кое-какое желание, которое я никак не могу...

Кубик Рубика
Задача такая,из любой позиции собрать кубик Рубика за минимальное число ходов(вывести алгоритм...

3
Razangann
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 147
04.12.2016, 16:55 2
Вообще для определения вам не нужны коллайдеры, достаточно определять нажата ли кнопка мыши и куда перемещен курсор.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
    Vector3 mouseStart;
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            mouseStart = Input.mousePosition;
        }
        if(Input.GetMouseButtonUp(0))
        {
            Vector3 delta = Input.mousePosition - mouseStart;
            // delta.x и delta.y есть смещение мышки
        }
    }
Теперь смотрите, вы можете отслеживать перемещение при нажатой левой кнопки мыши и обрабатывать поворот граней, в данном случае логично предположить что влево/вправо/вверх/вниз, либо добавить обработку диагональных векторов, это на ваше усмотрение.
Далее доработать код и отследить перемещение мыши с зажатой правой кнопки и обрабатывать поворот самого кубика.
Осталось решить какой действие левой кнопки мыши что будет делать с гранью. Если это только влево/вправо, то можете поворачивать грань, которая смотрит на вас лицом.
Либо же вы идете по пути когда нужно сначала кликнуть на грань, потом её вращать. Зависит от ваших желаний
1
KostyaAnt
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 16
05.12.2016, 10:29  [ТС] 3
Сам поворот кубика я уже написал , вот как это может выглядеть . Но смотри , сейчас пользователь должен мочь повернуть 9(кубиков)*3(грани) -> каждый кубик он может повернуть в каждую сторону то есть вверх/вниз влево/вправо а за ним повернется и сторона вся ,но сейчас не суть в повороте, а как определить куда сторону он хочет повернуть . Просто если кубик стоит всегда под одним углом например [6] -> это весь кубик . нажали на кубик повели мышку вверх , программа определила вычитая из точки нажатия наш сдвиг мышки и определила вверх, а теперь в ходе осмотра кубика оказалась так что кубик перевернули [9] -> пользователь сделал точно тоже самое и программа опять думает что это вверх но на деле - это вверх относительно экрана а для нас это должно быть поидее это вниз . Или я просто не так логику приложения построил?
0
Миниатюры
Кубик Рубика  
Razangann
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 147
06.12.2016, 07:47 4
Вообще вам можно получать текущий поворот кубика и исходя из него вращать в ту или иную сторону
Тут нужно будет придумать сложную формулу, которая будет точно определять сторону исходя из поворота кубика.
К сожалению сейчас не могу ответить на лету как это правильно сделать, как буду дома прикину углы поворота и отвечу
Вообще чтобы работать корректно с поворотами, советую к прочтению о Quaternion.

Добавлено через 16 часов 4 минуты
Так, я подумал и есть идея.
Для каждой грани нужно создать Parent. При повороте в этот parent пихать все кубики, которые принадлежат этой грани. Затем просто поворачиваем parent по часовой если сдвиг мыши по оси X > 0 и наоборот. Сейчас накидаю скрипт)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2016, 07:47

кубик рубика
Нужна помощь. Никак не могу найти алгоритма. Мне нужно заштрихованный кубик передвинуть на 3 ряд...

Кубик-Рубика
добрый вечер, форумчане) мне необходимо написать программу кубика-рубика. руководитель посоветовала...

Кубик Рубика
Здравствуйте)помогите пожалуйста если не трудно)) Изобразить на экране ЭВМ следующий рисунок


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru