Как сделать пазлы в unity

Обновлено: 02.07.2024

Одно изображение? Мало. Для создания норм игры "Пазл" нужно как минимум картинок 10-20, потом как двигать мне кажется помогут здесь.
А повороты вот: Нажми
Вот и усе!

Куда идем мы с пятачком бооооооольшой бооольшой секрет!
(а идем мы учить c++, и помогать на форуме с HTML)

Нужна помощь ещё вот в таком вопросе: в игре пазл на Delphi нужно сделать подсказки,например:при нажатии на кнопку показывалось место куска,также при нажатии на другую кнопку кусок перетаскивался на свое место..что-то вроде этого. подскажите с помощью каких функций это можно реализовать?
и какие ещё можно сделать подсказки?

Всем привет!
Представьте, у вас есть картина, которая разорвана на несколько разных частей (имеется несколько отдельных png c альфой).
Границы не прямые, все части разных размеров.
Игроку нужно собрать из кусочков цельную картину.
Причем, когда игрок правильно подносит одну часть к другой, рядом с той неподвижной частью возникает темный силуэт передвигаемой части.
А когда игрок отпускает мышку, передвигаемая часть встает на место этого темного силуэта, и части "склеиваются", появляется эффект светящейся обводки, и потом уже их можно двигать только вместе.

Подскажите алгоритм, как такое можно реализовать?
Хотя бы куда копать?
Прогаю на Юнити, но любой алгоритм подойдет, может кто на флеше делал или еще как.
Важен сам алгоритм, ну и предварительная настройка картинок, если требуется.

Пример того, что хочу, на видео:

Запустить видео по клику - Как делать игры

Первое что придумал:
У тебя есть одна статический часть. Так же тебе нужно запомнить позиции всех частей который будут подвижны - относительно статической в собранном виде.
Затем делаешь функцию которая смотрит - перенесли деталь в нужную область(область - позиция где она должна встать + некая окружность, размер которой определи сам ) если вошла то ставишь точно на позицию - вот и все.
Не знаю как в юнити, а в других движках - спрайты имеют ограничивающий их прямоугольник - вот тебе нужно проверить вошла ли точка на которую должна встать картинка в ее прямоугольник.

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

так или иначе соединяются только детали, имеющие одну общую точку соединяния. значит на каждой детали должны быть обозначены точки контакта и детали соединяются, если они имеют одинаковую точку контакта с одним идентификационным номером

я тоже об этом думал. А как обозначить (создать) эту точку контакта?

каждая деталь хранит в себе точки контакта 5 штук
каждая точка хранит в себе координаты x y и дистанцию стыковки с парной точкой dx dy. при движении детали проверяем дистанции стыковки у 5 активных точек
ну и свой номер

Чем-то не подходит?

FordPerfect
Вроде всё подходит. Сейчас примерно так же делаю. У каждой детали есть пивот (использую uGUI Unity). Расставил детали на поле, все пивоты переместил в одну точку (неблагодарная ручная работа).
У каждой детали есть словарь с остальными деталями и булевой переменной - прицеплена или нет. Проверка на склеивание проходит только, когда отпускаю деталь (решил пока обойтись без лишних трудозатрат). И если пивоты рядом, то деталь приклеивается к текущей и ко всем из словаря, которые уже приклеены. У тех, в свою очередь тоже выполняется приклейка новой детали.
Была мысль тоже делать через разницу векторов, но решил еще у людей спросить.

Больше проблемы возникают в подсветке (темная (при приближении детали) и светлая общая обводка (когда детали склеиваются)).
Хотя сейчас уже напрашивается решение для темной подсветки: при старте каждой детали создать темный клон и выключить его. При сближении ставить в нужное место и включать.

А вот с обводкой деталей не знаю как сделать. Это надо какую-то общую текстуру генерить и потом еще шейдером подсвечивать или как вообще. Тем более на uGUI.


А теперь давайте поговорим о результатах. Не так давно мы с коллегами по нашей гейм-студии издали игру. Стиль - семейный паззл. Затягивает не на шутку. Сами понимаете: графон, все дела, как же не затянуть? ;) А если серьезно, то идея пришла достаточно спонтанно, реализована была за какие-то пару-тройку недель, основное время ушло на доработку деталей.
А деталей должно быть много в стоящей игре. Вообще, считаю, что надо очень много внимания уделять именно деталям. Ой, что это я. Отбился от темы. Лучше покажу арты, которые накидал наш великолепный художник (ага, они все у нас только профи) для интерфейса. Вот они:


Данные арты породили очень много споров, и не зря. Привлекательная графика важна в игре для привлечения потенциального игрока, это действительно так. Нам всем очень понравился картонный вариант и был принят именно он (во всей красе). Вот сриншоты, сделанные для яблочного магазина на основе стиля игры:







Конечно же, мы сделали видеобзор этого приложения. В следующем видеоролике задействована моя рука (правда, зачем-то убрали все волосы с нее, но это неважно):

Игра реализована, как нетрудно догадаться, на unity3d. Вся механика данной игры построена на манипуляциях мешами (meshes). Меши меняют свои размеры и на них натягивается текстура. Все просто ;) Менюшки и окружение игры реализовано на нашем мини-темплейте, который, в силу его незавершенности, мы решили пока не распространять. Доделаем - обязательно появится на unity store, если будет востребован.

Еще одно видео с обзором сделал наш коллега из далекой азиатской страны, вот оно:

В наш паззл играют самые малые дети (девочке по имени София на видео еще нет 4-х):

В заключении хочу сказать, что скоро будет апдейт приложения, добавятся новые пачки паззлов (сейчас их около 200, будет больше). Также готовим новогодний пак, так что в выходные, думаю, будет чем заняться ;)


Эксперт в медицинских тренажерах VR на Unity, физических симуляциях и сетевых играх.

Что такое Unity

Unity — это и среда разработки, и игровой движок, с помощью которого создаются проекты для разных платформ: ПК, мобильных устройств, игровых консолей и интернет-платформ, — поэтому он называется кроссплатформенным. В Unity есть инструменты для создания объектов, их перемещения, работы с графикой, текстурами и звуком, поэтому сделать полноценную игру с его помощью можно даже в одиночку.

Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — Genshin Impact, успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.

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

  • имеет практически неограниченный бесплатный функционал;
  • не требует глубокого знания языков программирования для создания первых простых проектов;
  • имеет многочисленное и активное сообщество, в котором можно найти ответ на любой вопрос, потому что среди такого большого количества людей кто-то обязательно уже сталкивался с вашей проблемой.

Посмотрите также: Как установить Unity

Как создать простую игру

При создании собственного проекта важно помнить, что разработка кода — это примерно 20% игры; гораздо большее значение в ней имеют другие аспекты:

Разработчик игр на Unity

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

Русского языка в настройках нет, так что придется совершенствовать технический английский. Всего Unity занимает 11,3 Гб,поэтому перед установкой лучше проверить свободное место на диске и почистить его при необходимости.

Следующий шаг — создание Unity ID. Можно регистрироваться с помощью почты или использовать предложенные аккаунты, например Google, Facebook или Apple. Важно поставить первые две галочки: согласие с условиями использования Unity и признание политики конфиденциальности. Третья галочка — это согласие на маркетинговые рассылки, ее ставить не обязательно.

После регистрации Unity предложит создать тестовый проект Microgame. На выбор предлагается пять шаблонов:

  • LEGO Microgame;
  • шутер от первого лица;
  • картинг;
  • платформер;
  • пустой 3D-шаблон.

Можно выбрать любой из них и посмотреть, как работает создание игры в конкретном жанре. Обучающий материал пошагово демонстрирует назначение различных окон в интерфейсе и принцип работы с элементами игры: как заставить двигаться персонажей, поменять текстуру объекта или его форму. В обучении окно Scene, в котором происходит вся работа с элементами, уже заполнено различными объектами, но при создании проекта с нуля оно будет пустым.

Создание проекта

После обучения можно перейти к созданию своей первой игры на Unity с помощью кнопки NEW в меню проектов.

Новому проекту присваивается имя, выбираются место хранения на диске и темплейт — то есть шаблон для разработки, внешний вид и функционал которого зависит от количества измерений в игре. Проще начинать с 2D-проектов, так как для этого формата создано больше готовых ассетов. Конечно, можно сразу начать делать 3D-игры, но в этом случае многие элементы и анимации придется самостоятельно создавать с нуля или выделять бюджет на то, чтобы делегировать эту часть работы другим специалистам.

Настройка интерфейса

В стандартном интерфейсе проекта шесть элементов рабочей области:

  1. Верхняя панель инструментов— в ней находятся стандартные вкладки File, Edit, Help, как во многих других интерфейсах, а также вкладки Assets, GameObject, Components и Window.
  2. Scene — окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).
  3. Games — это окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.
  4. Hierarchy — окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.
  5. Project — это система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).
  6. Inspector — окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.


Добавление объекта

Объекты на экран Scene можно добавить из Asset Store. Для этого на панели инструментов нужно кликнуть на вкладку Window –> General –> Asset Store.

В строке поиска можно по названиям найти нужные компоненты, например, сет Free Platform Game Assets.

Как и другие ассеты, он загружается с помощью кнопки Import.

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

После установки все ассеты будут доступны в окне Project. Теперь можно комбинировать и перемещать эти объекты, менять их форму, причем сделать это можно с помощью мыши или горячих клавиш, не написав ни одной строчки кода. Например, из перечня платформ самых разных видов можно выбрать одну и мышкой перетащить ее в рабочую область.

Шаг 2. Перенести в область Scene

Работа со скриптами

За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.

Базовые элементы скриптов — это:

  • using — элемент в коде, который подключает библиотеки;
  • public class — в этой строке обычно прописан класс MonoBehaviour, он содержит набор функций, необходимых для работы скрипта;
  • void — те самые функции, с их помощью прописываются действия, происходящие в игре.

Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).

И можно заметить, что в консоли это слово выводится один раз.

Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.

В консоли можно будет заметить, что апдейт действительно срабатывает каждый фрейм и объект, к которому применен этот скрипт, плавно движется.

Настройка триггеров

Для понимания сути триггеров важно усвоить, что такое коллайдер (Collider). Это компонент, который присваивается объекту в пространстве игры, задает форму и делает его твердым, недоступным для прохождения сквозь него. Например, если мы разместим монетку в 2D-пространстве и захотим сделать так, чтобы она упала на платформу, то без использования компонента Collider ничего не получится — монетка пролетит сквозь платформу.

Поэтому обоим объектам необходимо присвоить компонент Box Collider 2D — это тонкая зеленая линия, которая обводит элементы по контуру, и за счет этой рамки они становятся твердыми, то есть один не может пройти сквозь другой.

Так объекты обязательно соприкоснутся и монета встанет на платформу.

Триггер (Trigger) — это пространство на карте, при попадании объекта в которое происходит действие; он тоже обводит объект или область в пространстве по краям. По сути, это тот же коллайдер, только триггер позволяет объектам проходить внутрь этой области. Представьте, что на ту же самую платформу вместе с коллайдером наброшен триггер, и при попадании персонажа внутрь триггерной области активируется телепорт — персонажа перебрасывает в другую точку карты.

Чтобы создать триггер, нужно накинуть тот же самый компонент коллайдера, но поставить галочку Is Trigger.

Триггеры распознают три варианта взаимодействия области на карте и объекта:

  • OnTriggerEnter — объект зашел в зону;
  • OnTriggerStay — объект находится в зоне;
  • OnTriggerExit — объект покинул зону.

Что дальше?

Разработчик игр на Unity

Уже во время обучения вы создадите себе портфолио, сможете брать подработки и откликаться на вакансии.

🏓 Создаем 2D-игру на Unity: инструкция для новичка

Недавно мы рассказали о том, как научиться разработке игр на Unity . Продолжим тему на практике и покажем, как новичку создать на этой платформе первую 2D-игру.

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

Двумерные игры сравнительно просты: для них не требуется сложных 3D-моделей, программный код по сравнению с 3D-проектами выглядит понятнее. Такие игры популярны как на десктопах, так и на мобильных устройствах. Unity также позволяет разрабатывать игры и для браузеров.

За последние годы вышло много популярных двумерных игр:

Программная реализация 2D-игр проще не только из-за отсутствия третьего измерения: на самой сцене меньше объектов, вместо трехмерных моделей плоские спрайты, вместо скелетной анимации – покадровая. А еще 2D-игры проще портировать на другие платформы – легче найти новую аудиторию.

Давайте создадим простую игру в жанре пинг-понг 🏓 . Перед тем как приступить к созданию игры, продумайте, какой именно результат хотите получить. На первых этапах рекомендуется использовать схематические шаблоны, чтобы быстрее получить работающий результат. В этой инструкции мы так и поступим. Графических ресурсов использовать не будем: и ракетки, и отбиваемый мяч будем пока отображать простыми белыми спрайтами.

Предварительно рассмотрим основные понятия Unity, без понимания которых будет проблематично создать игру:

Предполагаем, что вы уже установили редактор и создали аккаунт на портале Unity.

В первую очередь создадим новый проект и откроем его настройки (Edit → Project Settings). Во вкладке Editor установим параметр Default Behaviour Mode в значение 2D

Настройка проекта Детальная настройка проекта

Следующим шагом сохраним текущую активную сцену, назвав ее, например, Scene1. Теперь создадим основные игровые объекты: ракетку, мяч и менеджер игры, в котором будет храниться основная логика игры.

1. Создаем пустой объект, переименовываем в GameManager.

Создаем пустой объект

Создаем пустой объект

3. Создаем квадратный спрайт, называем его Pad (Assets → Create → Sprites → Square). Аналогично создаем круглый спрайт Ball (Assets → Create → Sprites → Circle). Масштабируем спрайт Pad со следующими параметрами – x:0.5, y:2.5, z:1.

Создаем спрайты

Создаем спрайты

4. Создаем префабы для Pad и Ball, после чего добавляем к ним компонент Box Collider 2D (включаем параметр Is Trigger) и компонент Rigidbody 2D (выставляем параметр Body Type в значение Kinematic).

Добавляем .компонент Box Collider 2D Настраиваем.компонент Box Collider 2D Добавляем компонент Rigidbody 2D Масштабируем спрайты

6. Заполняем скрипты следующим кодом.

GameManager.cs Ball.cs Pad.cs

6. Добавляем к префабу Ball и Pad теги с аналогичными именами. Выделив префабы, в инспекторе мы можем видеть выпадающий список тегов. Там же расположены и кнопки для добавления и редактирования тегов.

7. В настройках камеры выставляем параметр Projection в значение Orthographic, а параметр Clear Flag – в значение Solid Color.

Настройка камеры

Настройка камеры

8. Настраиваем кнопки, как показано на следующих скриншотах (Edit → Project Settings → Input Manager).

Настройка ввода, основное Настройка ввода, первый игрок Настройка ввода, второй игрок

Вот и всё, игра готова!

Пинг-понг, итоговый результат

Пинг-понг, итоговый результат

Билд для платформы Windows

1. Официальный туториал от Unity, где детально рассмотрен процесс создания roguelike RPG.

2. Youtube-канал Brackeys , где можно найти серию видеоуроков по созданию 2D-платформера.

3. Youtube-канал N3K EN содержит множество уроков как по отдельным компонентам Unity, так и полноценные серии уроков по созданию игр с нуля.

Если у вас мало опыта в разработке игр на Unity, мы рекомендуем обратить внимание на факультет разработки игр GeekBrains . Материал хорошо структурирован и содержит все необходимое для того, чтобы стать профессиональным Unity-разработчиком.

В числе прочего вы разработаете 2D-платформер с физическими загадками и динамическим освещением, научитесь портировать его на мобильные устройства. Кроме того, разработаете полноценную браузерную стратегию, а также игру в жанре двухмерных гонок.

По окончании обучения вы будете иметь портфолио из 4 игр, которое можно показать на собеседовании. Если же какая-то часть материала будет непонятна, вы всегда можете обратиться к персональному преподавателю.

Читайте также: