Очередной клон тетриса на Unity

Созданная в далеком 1984 году, данная игра до сих пор не теряет актуальности. В сети можно найти различные способы создания этой игры, вот и мы представляем легендарный и очередной тетрис. Код написан с нуля и весь в одном скрипте, в качестве основы для фигур, используется трехмерный куб, то есть, скрипт сам создает фигуру, если заменить основу, допустим, на спрайт, то будут спрайтовые фигуры. Реализован минимальный набор: сдвиг влево или вправо, поворот, ускорение падения. При этом, если фигура при повороте, выходит за рамки игрового поля, то она будет смещена в одну из сторон, если это возможно. Если фигура находится рядом с другой и при повороте, она перекрывает другие, то смещения происходит не будет, как и самого разворота.


Примечание: в данном примере используется примитивная модель, созданная в 3D редакторе.


Если вы создадите собственную модель, то после импорта в Unity, необходимо отрегулировать ее размеры. В качестве шаблона подойдет, стандартный Cube, просто добавляем его на сцену и ровняем по нему свою модель:


Если вместо 3D модели используется спрайт, его надо точно так-же выровнять по шаблону.

Фигура создается по оси и от нуля по Y. То есть, первый кубик получает координаты [6, 0], затем ниже второй [6, -1] и так далее, пока не создана нужная фигура, можно и в обратном порядке, снизу вверх, главное, чтобы в этом случаи конечные блоки по Y = 0. Поскольку размер кубов ранен единице и передвижение тоже, то допустим, объект в позиции [10, -5] будет добавлен в массив с позицией соответственно [10, 5], с использованием абсолютных значений.

Поскольку пример кода достаточно объемный, то он доступен только для скачивания. Любой зарегистрированный пользователь может свободно скачать пример проекта по ссылке ниже. Внутри кода, есть необходимые комментарии, далее уже самостоятельное изучение. В представленной игре отсутствует подсчет очков, меню и т.п.

Скачать проект:

Внимание! Посетители, находящиеся в группе Гости, не могут скачивать файлы.

Комментариев 11

Офлайн
Slava XD 9 июля 2016
как то непонятно просто по скрипту как собирать игру
Онлайн
Light 10 июля 2016
Slava XD, игра уже собрана и работает. Чтобы вносить какие-либо изменения, например плавное движение фигур, для этого нужно изучить логику скрипта.
Офлайн
Slava XD 13 июля 2016
Light,
Согласен мне понравился скрипт перемещения предметов и порталы их улучшаю
Офлайн
Sershum 13 января 2017
Дал маме поиграть, она помню не расставалась с китайским тетрисом ручной сборки))), пИ сала кипятком))), далее - подсчет очков, повышение скорости при повышении уровня - это все шляпа, пара строк, вот ломаю голову как показать следующую фигуру
Офлайн
Sershum 14 января 2017
Намёка не будет)))))))))))
Онлайн
Light 14 января 2017
Sershum, тут простая логика. Фигура выбирается рандомно, значит, функция которая добавляет новую фигуру, дополнительно должна генерировать новое число массива фигур. А показывать результат через UI систему.

В целом тут код нуждается в правках и доработки. Тем не менее на его основе я писал тетрис под андройд. https://play.google.com/store/apps/details?id=com.NULLcode.BlockPuzzleSimple
Офлайн
Sershum 15 января 2017
Light,
как я понял это здесь
void CreateShape() // создание массива фигуры
{
sample.transform.localEulerAngles = Vector3.zero; // сброс вращения для вспомогательного объекта
shape = new List<GameObject>(); // очистка массива фигуры
int j = Random.Range(0, shapeName.Length); // выбор случайной фигуры
Офлайн
Sershum 15 января 2017
Sershum,
Но все равно не догоню, т.к j пока еще не известен? или скажем еще одна переменная допустим int pj, потом клонируем етот метод и j = pj?
Офлайн
Sershum 15 января 2017
Все башка запылилась, пойду спать)))))
Онлайн
Light 16 января 2017
Sershum, суть в том, что рандомный выбор нужно делать после рождения фигуры. На старте сцены делать разовый запрос рандома, а потом только после рождения фигуры. Саму переменную нужно объявить в заголовке, чтобы к ней можно было обращаться в любое время.

Сильно нужен тетрис? Могу продать более продвинутый код, который я давал выше по ссылке на гугл плее. И можно прикрутить туда показ фигур)
Офлайн
Sershum 16 января 2017
Light,
Не, тетрис не впирался))) пытаюсь учиться, так вообще занимаюсь моделингом (не профессионально), заинтерисовался C#, увлекло, похлеще игрушек типа квестов)))
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика