Начать программировать игры на unity. Именования различных аспектов одного и того же

В версии Ubuntu 11.04, произошло серьезное изменение в графической среде пользователя, теперь вместо GNOME в его традиционном виде все "крутится" под Unity. Так, что теперь Ubuntu еще больше похожа на Mac OS X.

Пустой рабочий стол Unity:

Верхнее меню Unity, так называемый Dash. По сути это текстовый поиск по именам программ и файлов. Вы пишете буквы, а оболочка выводит программы и файлы в которых есть такие буквы :

Кроме этого, в меню Dash есть Линзы (Dash Lens). Это переключатели для поиска только в определенных категориях и местах. Можно пролистать все установленные программы если воспользоваться линзой "Программы" :

Существует набор линз для разных предметных областей. Например есть линза "Википедия":

По умолчанию, "из коробки" устанавливаются линзы "Home", "Программы", "Файлы", "Музыка" и "Видео". Дополнительные линзы можно установить через репозиторий Ubuntu или сторонние репозитории.

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

Важное примечание

Относительно Unity нужно знать несколько вещей:

  • Для работы Unity необходимо установить драйвера на видеокарту, которые поддерживают OpenGL, а также движок визуальных эффектов Compiz. В Ubuntu 11.04 Compiz устанавливается автоматически, а подходящий драйвер может не установиться автоматически и в этом случае Ubuntu 11.04 будет загружаться с обычным рабочим столом GNOME.
  • В Ubuntu 11.04 вы можете отказаться от использования Unity и работать в GNOME привычного вида. Для этого нужно всего лишь завершить сеанс пользователя и заново войти в систему выбрав на логин-экране опцию "Ubuntu Классический". Эта опция доступна внизу логин-экрана после ввода имени пользователя (но ее нужно выбрать до ввода пароля!).
  • Если ваша видеокарта не поддерживает OpenGL, можно установить пакет Unity-2d, который рабтает как надстройка над GNOME.

Актуализация 2013

В версии 12.04 П акет Unity-2d устанавливается "из коробки". Для загрузки в облегченном варианте нужно просто выбрать Unity-2d в экране авторизации (до ввода пароля).

Кнопка Dash перемещена из верхней панели в левую боковую панель быстрого запуска (Launcher). Но физически она осталась почти на том же месте - вверху слева.

Организация интерфейса в Unity

Вверху экрана размещается панель которая содержит (слева направо ) кнопку открытия меню Dash, пространство для меню программ и системный трей.

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

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

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

Меню Наутилуса размещено в верхней панели Unity. Слева панель быстрого запуска (Launcher) с кнопками для запуска часто используемых программ. По вертикали под Наутилус используется почти все пространство монитора, за исключением 24 пикселей на верхнюю панель Unity.

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

Как пользоваться Unity

Собственно ничего принципиально нового эта оболочка не предлагает. Точно также как и раньше программы запускаются либо кнопками непосредственно с панели быстрого запуска (Launcher) , либо через общее меню Dash. Запущенные программы отображаются в той же панели быстрого запуска, такими же значками, только их значки выделены светлым треугольничком или двумя.

Как вставить кнопку запуска программы в панель быстрого запуска (Launcher) ?

Как удалить кнопку запуска программы из панели запуска?


Настройка Unity

Для того, чтобы изменить настройки Unity нужно установить пакет compizconfig-settings-manager, который по умолчанию не устанавливается. После его установки в Dash можно ввести "ccsm" и появится программа "Менеджер настроек CompizConfig".
В окне программы нужно открыть раздел "Рабочий стол" и там будет виден "Unity".

Актуализация 2013

Теперь есть еще одна программа для настройки интерфейса Unity -MyUnity , пакет для установки так и называется - myunity:

Использование клавиатуры в Unity

Unity еще более, чем классический GNOME, унифицирован с Windows по клавиатурным комбинациям. Теперь нажатие обеих (и правой и левой) клавиш Win дает одинаковый результат.

  • F10 - активизировать трей. Затем можно перемещаться по элементам трея стрелками.
  • Win - открыть меню программ (Dash) с поиском. По мере того как вы вводите буквы в поле, программа выдает вам подходящие варианты. Поиск работает как по английскому языку (оригинальному имени программ) так по русскому - именам ярлыков программ.
  • Alt+Tab - переход между окнами запущенных программ.
  • Win+D - свернуть все окна и освободить рабочий стол. В Ubuntu 11.10 сделали Ctrl+Alt+D.
  • Win+R - диалог "Выполнить", ранее открываемый по Alt+F2. В нем можно вписать однострочную терминальную команду. Есть поиск по истории введенных команд. В Ubuntu 11.10 снова сделали Alt+F2 .
  • Tab или стрелки вверх\вниз\вправо\влево - перемещение в меню.
  • Win+S - показать 4 рабочих стола сразу.
  • Win+Tab - при нажатии этого сочетания на каждой кнопке появляется номер, нажав этот номер на клавиатуре можно запустить\перейти в эту программу. Нужно удерживать нажатой Win до ввода цифры.
  • Ctrl+L - изменить режим адресной строки в Наутилусе с "табов" на текстовый.

Переопределить сочетания клавиш можно через апплет "Клавиатура" и через CompizConfig:

Тюнинг рабочего стола

Во-первых можно использовать "Менеджер настроек CompizConfig" для настроек различных визуальных эффектов.

Во-вторых можно установить дополнительные пакеты, которые реализуют какие-либо функции управления или удобства. Например пакет Glx-Dock (также известный как Cairo-Dock) реализует Dock панель в стиле Mac OS X и эту панель можно использовать для размещения кнопок запуска программ, которые не вмещаются на панели Unity. Выглядит это примерно так:

Для любителей глубоко копнуть

Если ваша программа не отображается в трее, хотя и должна можно попробовать вот такие команды:

gsettings set com.canonical.Unity.Panel systray-whitelist "["all"]"
gsettings set com.canonical.Unity.Panel systray-whitelist "[""]"
gsettings set com.canonical.Unity.Panel systray-whitelist "["имя_вашей_программы"]"

Если вы хотите изменить контекстные меню кнопок из панели запуска то сделать это можно скопировав файл нужной кнопки из папки /usr/share/applications в папку ~/.local/share/applications. Эти файлы имеют расширение.desktop. например nautilus-home.desktop.

Например так:


Name=Изображения
Exec=nautilus Изображения
TargetEnvironment=Unity


Name=Загрузки
Exec=nautilus Загрузки
TargetEnvironment=Unity

Можно еще глубже копнуть:

Или на телефон +7 918-16-26-331 .

Даже небольшая сумма может помочь написанию новых статей:)

Доброго времени суток. Данная статья посвящена мультиплатформенному инструменту Unity3d. В статье рассмотрены оптимальные, по моему мнению, способы работы с движком, даны практические советы по эксплуатации и дополнительные (общие) сведения; рассмотрены перспективы развития Unity3d.

  • Раздел 1. Введение
    • Что такое Unity ?
    • Возможности Unity3d
    • Проблема дополнительных знаний
  • Раздел 2. Начало работы
    • Вспомогательная литература
      • Сцены
      • Отладка
    • Структурирование
  • Раздел 3. Практические советы
    • Написание скриптов
    • Видеоуроки
    • Устранение ошибок
  • Раздел 4. Завершение работы
    • Выводы
    • Публикация игры
    • *Оптимизация
    • Теория графики
    • Полезные ссылки
    • Мнение
      • Что хочется увидеть в будущем?
  • Источники информации

Раздел 1. Введение

Что такое Unity3d ?
Unity3d является современным кросс-платформенным движком для создания игр и приложений, разработанный Unity Technologies. С помощью данного движка можно разрабатывать не только приложения для компьютеров, но и для мобильных устройств (например, на базе Android), игровых приставок и других девайсов.
Поговорим немного о характеристиках движка. Во-первых, стоит отметить то, что в среду разработки Unity интегрирован игровой движок, иными словами, вы можете протестировать свою игру не выходя из редактора. Во-вторых, Unity поддерживает импорт огромного количества различных форматов, что позволяет разработчику игры конструировать сами модели в более удобном приложении, а Unity использовать по прямому назначению - разработки продукта. В-третьих, написание сценариев (скриптов) осуществляется на наиболее популярных языках программирования - C# и JavaScript .
Таким образом, Unity3d является актуальной платформой, с помощью которой вы можете создавать свои собственные приложения и экспортировать их на различные устройства, будь то мобильный телефон или приставка Nintendo Wii.
Для того чтобы создать свою игру, вам, как минимум, нужно владеть одним из доступных (на Unity) языков программирования: C#, JavaScript или Boo.

Будет прекрасно, если вы владеете, например, 3Ds max"ом, это вам сильно поможет при создании игры. Что касается меня, то мне пришлось освоить 3Ds max на базовом уровне, ибо нигде не мог найти нужную мне модель дома . В любом случае вам понадобится установленный 3Ds max на ваш компьютер, если вы собираетесь импортировать готовые 3D модели. Ибо, в большинстве своем, необходимые модели имеют формат проекта, т.е. необходимо будет зарендерить их в соответствующий для Unity3d формат, например, в *.3DS, и только после этого делать импорт в Unity, в противном случае последний выдаст ошибку.

Раздел 2. Начало работы

Вспомогательная литература
Обратимся к литературе, которая поможет нам изучить Unity3d, а именно, к Unity 3.x Game Development Essentials . Книгу в свободном доступе можно найти в гугле, если вы предпочитаете бесплатный контент.
О чем книга? Пожалуй, обо всем, что только нужно для создания полноценной игры. Настоятельно рекомендую приобрести данную книгу и изучить самостоятельно.
Пару слов об игре и содержании книги. Ваш игрок оказывается на необитаемом острове, ему необходимо спастись, для этого он выполняет различные задания и, будем надеяться, спасается. Игру можно пройти за пару минут, однако создание игры занимает далеко не пару минут, даже не пару часов, пожалуй.
Книга содержит очень подробное руководство по созданию игры «с нуля». В ней описано многое, что вам, скорее всего, понадобится для создания вашей игры.

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

На это стоит обратить внимание
NB!
Приведу несколько советов при создании игры в Unity3d.

º Коллайдеры
Что это такое - коллайдер? Коллайдер - это область пространства, при взаимодействии с которой выполняются те или иные скрипты, действия. Чтобы лучше понять что это такое, представьте, что вы подходите к автоматически открывающимся дверям универмага. За пару метров от дверей, срабатывает датчик и двери распахиваются перед вами, но если вы пройдете за три метра, то ничего не произойдет. Как раз та зона, в которой действует датчик движения, отвечающий за открывание дверей, и есть коллайдер. Вы входите в зону - двери открываются, выходите из зоны - и датчик уже никак не будет реагировать на ваше присутствие. Точно так же и в игре.
Так вот, о коллайдерах. Предположим, мы импортировали в наш проект автомобиль и хотим сгенерировать для него коллайдер. Можно сгенерировать автоматически коллайдер для всего автомобиля, но тогда для каждой детали автомобиля - фары, уплотнителя, зеркала, покрышки - будет сгенерирован свой коллайдер.

Это абсолютно не оптимально. Безусловно, нам не нужно генерировать столь большое количество коллайдеров, достаточно ограничиться одним!

Обратите внимание, что это не тонкость. Стараться сэкономить память нужно везде. У вас есть какое-то место в игре, куда игрок не сможет попасть? Не генерируйте никакие коллайдеры для этого места вообще. У вас есть дверь, которую вы импортировали в проект из 3Ds max"а? Небось, она очень хорошо прорисована (сам сталкивался с тем, что у двери даже шурупы были прорисованы отдельным объектом), значит, создайте один box-коллайдер для всей двери - вы сэкономите много памяти! Поверьте, что вам эта сэкономленная память еще очень и очень пригодится.

º Оптимальная работа со сценами
Поговорим об оптимизации сцен, о самих же сценах будет речь вестись далее.
Представьте следующую ситуацию: у нас есть сцена «home» - когда игрок находится в здании и сцена «street» - когда игрок выходит из здания на улицу. Естественно, из второй сцены мы можем видеть дом, т.е. часть первой сцены, и наоборот (если, конечно, у здания есть окна). В таком случае оптимально следующее построение сцен. В первой сцене все, что касается улицы (т.е. того места, куда мы не можем попасть без перехода на другую сцену) надо максимально упростить. Иными словами, нам нужно оставить только внешний вид вида из окна, а всю начинку - распотрошить. Т.е. все коллайдеры удалить, разрешение и т.п. свести к минимуму. Действительно, зачем процессору напрягаться с обработкой той местности, которую мы не можем посетить? Аналогичным образом поступаем со второй сценой («street»). В данном случае мы можем вообще все удалить из дома и оставить только его «коробку».
Вы хотите создать minimap? Пожалуйста, только избавьтесь от всех коллайдеров и снизьте разрешение, в таком случае ваша игра будет оптимальна.
Именно таким образом работа со сценами становится оптимальной. Еще раз отмечу, что это не тонкости, это серьезные вещи, которые требуют внимания создателя.

Сцены
Готовая игра - это набор сцен, соединенных между собой (точно так же, как и жизнь - это набор дней). Об оптимальном проектировании игры мы сейчас и поговорим.
Прежде чем создать свой проект - подумайте, что он должен в себя включать (какие сцены). Составьте список сцен (на листочке), обдумайте, что каждая сцена будет в себе содержать. Теперь постарайтесь каждую сцену разбить на подсцены, чем больше их будет, тем легче будет вашему ЦП. Конечно, не стоит перебарщивать с количеством сцен. Предположим, что ваш игрок находится в здании и из него никогда не выходит, в здании есть, например, пару этажей, крыша, а на каждом этаже имеется три комнаты. В данном случае, по моему мнению, было бы оптимально «разбить» здание на две сцены - два этажа и крыша. Дробление же каждого этажа на сцены с комнатами - не оптимально. Это просто не нужно, если каждая из комнат слабо загружена. Иными словами, надо грамотно расходовать память процессора, но и забывать о получении удовольствия от игры тоже не стоит.
Отладка
Помните, что хороший создатель должен учитывать то, что его игра, либо приложение, будет использоваться на различных ЭВМ, а это означает, что свой контент необходимо отладить так, чтобы он мог использоваться на различных устройствах. Самый очевидный и важный момент отладки - оптимизация приложения под различные разрешения экранов. Это важный момент и создатель игры обязательно должен обратить на него свое внимание, в противном случае, результатом своей работы сможет быть доволен только он один.
Структурирование
При конструировании игры важно помнить о структурировании данных - немаловажном аспекте. Имеется ввиду, что все должно быть на своем месте. Создаете скрипты? - создайте папку для скриптов, там и храните их, с большой вероятностью, у вас будет не один скрипт, разбрасывать их по всему проекту не есть хорошо, сами потом будете мучиться. По своему опыту могу сказать, что вам точно понадобится создать папки со скриптами, звуковыми файлами, с GUI текстурами, материалами, анимациями, быть может, префабами и собственными моделями (импортированные из 3Ds max"а объекты лучше хранить именно в последней папке, дабы не разбрасывать все модели по проекту в хаотичном порядке). Когда вы создаете тот или иной скрипт, помните о том, что название переменных, классов и т.п. должны говорить все сами за себя. Если вы хотите создать скрипт для инвентаря (поднять предмет, использовать предмет), то лучше все скрипты однообразных действий (например, поднятия) начинать с ключевого слова, например: Catch<имя предмета>; Use<имя предмета>, в таком случае вам будет легче ориентироваться в проекте, да и выглядит так намного симпатичнее. Помните золотое правило: хорошая программа не та, которая написана тяп-ляп и отлажена до предела, хорошая программа та, которая пишется сразу правильно и требует минимальных «затрат» на отладку. Если вы будете пользоваться этим правилом, то у вас все будет намного лучше чем у тех, кто этим правилом не пользуется.
Написание скриптов
Увы, этот подраздел будет совсем короткий. Просто старайтесь сначала представить то, что вы хотите реализовать, затем попробуйте описать словами алгоритм, а далее - преобразовать слова в работающий код. Используя книгу, о которой речь шла выше, вам навряд ли придется сильно потеть над разработкой кодов и других вещей, повторюсь, что в книге описано практически все, что только может понадобиться, а все, что не описано - легко додумать самому.
Видеоуроки
Рекомендую следующие youtube каналы для ознакомления:

К счастью, программный продукт Unity обновляется постоянно, но, увы, видеоуроки сами это делать не могут. Получается так, что огромное количество видеороликов, актуальных год назад, теряют свою актуальность и становятся, попросту, бесполезными.
1 - здесь вы всегда найдете актуальные видеоуроки, понятное объяснение, детальный разбор скриптов и всех действий. Лучше этого канала пока что ничего не нашел. Если вы не имеете вообще никакого представления о создании игры, то вам однозначно нужно заглянуть на данный канал. 2 - серьезная команда, видеоуроков только, жаль, меньше, чем у 1. 3 - есть полезные вещи, жаль только, что видеоуроки стали почти неактуальными.

Устранение ошибок
Unity3d - такой движок, что если у вас имеются ошибки в написании скриптов, то игра ваша не запустится. Если же нет явных ошибок, то игра запускается, если что-то идет не так, то консоль вам об этом обязательно сообщит.
Это предупреждения, они просто говорят вам о возможных недочетах, недоработках:

Это ошибки, если такие имеются, то игра не запустится:

Раздел 4. Завершение работы

Выводы
Unity3d - очень гибкий движок, предоставляющий большую свободу действий пользователю. Чтобы упростить жизнь разработчику и потребителю, можно предпринять некоторые шаги для оптимизации своего проекта.
Теперь мы, с заложенной базой знаний, можем спокойно приступать к созданию своего ультра-популярного приложения!
Публикация игры
Свою готовую игру можно опубликовать на одном из игровых сервисов, например, на www.kongregate.com
*Оптимизация
Если вы читаете данный подраздел, то либо вам просто интересно, что здесь написано, либо вы не прочитали NB! из раздела 2. Будем надеяться, что вы относитесь к первой категории. В данном подразделе еще раз хочется отметить то, что нужно сразу писать игру оптимальной, а не писать ее хоть как-то, и только затем отлаживать - это гиблый путь и поступать так не стоит. По поводу оптимизации - еще раз обратитесь ко второму разделу.

Раздел 5. Дополнительная информация

Теория графики
Практика без теории бывает не очень уж и интересной, поэтому советую ознакомиться с теорией компьютерной графики. www.intuit.ru/department/graphics/graphalg/lit.html
Протестировать свои теоретические знания можно тут

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

Обзор приложения

В этом уроке вы узнаете, как создать создать мобильную 2D игру в Unity. В качестве языка программирования будет использован C#.

Цель игры состоит в том, чтобы поймать в телепортационный луч Буренок, прежде чем они достигнут безопасного сарая.

В этом проекте вы узнаете следующие аспекты разработки в Unity:

  • создание 2D проекта в Unity
  • ознакомление с интерфейсом Unity
  • создание префаба
  • добавление скриптов к игровым объектам
  • обработка столкновений
  • использование таймеров
  • работа со звуком

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

Загрузите Unity и выберите New Project в меню File меню, чтобы открыть новый диалог проекта. Выберите каталог для вашего проекта и установить настройки по умолчанию для 2D.Open

Настройки

На следующем этапе вы познакомитесь с интерфейсом Unity. Создайте проект на мобильных разработок, щелкнув на Build Settings в меню File и выбрав нужную вам платформу для вашей будующей игры.

В Unity можно создавать игры под iOS, Android, BlackBerry и Windows Phone 8. Поскольку мы собираемся создать 2D игры, первое, что мы должны сделать после выбора платформы, - это выбрать размер картинок, которые мы будем использовать в игре:

  • iPad без Retina: 1024px x 768px
  • iPad с Retina: 2048px x 1536px
  • 3.5" iPhone/iPod Touch без Retina: 320px x 480px
  • 3.5" iPhone/iPod с Retina: 960px x 640px
  • 4" iPhone/iPod Touch: 1136px x 640px

Поскольку Android является открытой платформой, существует множество устройств различными разрешениями экрана и плотности пикселей. Некоторые из наиболее распространенных из них перечислены ниже:

  • Asus Nexus 7 Tablet: 800px x 1280px, 216 ppi
  • Motorola Droid X: 854px x 480px, 228 ppi
  • Samsung Galaxy SIII: 720px x 1280px, 306 ppi

Для Widows Phone и BlackBerry:

  • Blackberry Z10 : 720px x 1280px, 355 ppi
  • Nokia Lumia 520 : 400px x 800px, 233 ppi
  • Nokia Lumia 1520 : 1080px x 1920px, 367 ppi

Но, даже если мы будем концентрироваться на платформе iOS в этом уроке, игру можно будет воспроизвести на любой другой платформе.


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

Интерфейс Unity

Не забудьте нажать кнопку 2D в панели Scene . Вы также можете изменить разрешение, которое используется для отображения сцены, на панели Game .

Игровой интерфейс


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

Языки программирования в Unity

Вы можете использовать один из трех языков программирования, которые поддерживает Unity: C# , UnityScript , который по синтаксису похож на JavaScript и Boo . Каждый язык имеет свои плюсы и минусы и только от вас зависит на каком языке создавать свою игру. Мне больше нравится C#, так что его и будем использовать.

Если вы хотите программировать на другом языке, то обратитесь к Unity"s Script Reference для изучения.

Прежде чем мы начнем кодирование, нам нужно добавить наши ассеты в проект Unity. Есть несколько способов сделать это:

  • выбрать Import New Asset из меню Assets
  • добавить детали в папку assets в проектеt
  • перетащить ассеты в окно проекта

После завершения этого шага, вы должны увидеть ассеты вашего проекта в папке Assets в панели Project .

Создание сцены

Мы готовы создать сцену нашей игры путем перетаскивания объектов в панель Hierarchy (Иерархия) или Scene (Сцена).

Фон

Перетащите фон (файл gameBg.png) в панель Hierarchy панели. Затем он должен появиться в панели Scene .

Поскольку вкладка Scene (Сцена) установлена в режим 2D, вы можете выбрать Основную камеру (Main Camera ) в панели Иерархия, при этом вы увидете то, что камера будет отображать. Вы также можете увидеть это переключившись из вкладки Сцена во вкладку Game (Игра). Чтобы вся сцена видна, измените параметр Size (Размер) для Основной камеры на 1.6 в панели Inspector (Инспектор).


Летающая тарелка

Корабль в нашей игре является статическим элементом и игрок с ним никак не взаимодействует. Расположим его в центре сцены, для этого просто ппертащите летательный аппарат из папки Assets, находящейся в панели Project , на вкладку Scene . Точно также как и с НЛО перенесем на сцену сарайчик для наших коровок и расположим его так, как показано на скриншоте:


Коллайдер сарая

Чтобы убедиться, что сарай реагирует на столкновение с коровой когда она пытается войти внутрь – нужно добавить один компонент, а точнее Box Collider 2D .

Выберите сарай в сцене и во в вкладке Inspector нажмите на кнопку Add Component (добавить компонент). Из списка компонентов выберите раздел Physics 2D , а в нем Box Collider 2D . Убедитесь в том, что напротив параметра Is Trigger стоит галочка. Если ее нет - поставьте.


Мы хотим, чтобы наш триггер срабатывал, корова попадала на дверь сарая, поэтому мы должны сделать коллайдер поменьше. Перейдите на вкладку Inspector и измените значения коллайдера напротив Size (высота и ширина коллайдера) и Center (координаты центра коллайдера) так, чтобы он располагался поближе к двери сарая. У меня это получилось примерно так:


Скрипт для обработки столкновений

Настало время написать наш первый код. Нам нужен скрипт, который заставлял бы приложение реагировать на столкновение всякий раз, когда корова входит в сарай. Выберите сарай и нажмите на кнопку Add Component в панели Inspector . Выберите New Script назовите его OnCollision . Незабудьте поменять язык на C#.

Откройте вновь созданный файл и добавьте следующий фрагмент кода:

Using UnityEngine; using System.Collections; public class OnCollision: MonoBehaviour { void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.name == "cow(Clone)") { /* Проиграть крик о помощи */ audio.Play(); /* Уничтожим корову */ Destroy(other.gameObject); } } }

Сниппет реагирует на столкновение между объектами, к которым привязан скрипт, сараем и объектом под именем cow(Clone) - один из экземпляров коровы, префаб которой мы создадим позже. Когда происходит столкновение, проигрывается звук и объект корова разрушается.

Добавляем звук

Для воспроизведения звука, когда корова попадает в сарай, нужно для начала прикрепить этот звук к сараю. Щелкните мышью на сарае во вкладке Hierarchy или на самой сцене (вкладка Scene ), нажмите кнопку Add Component во вкладке Inspector и выберите в разделе Audio пункт Audio Source Audio Source . Теперь нам нужно связать с ним наш звуковой файл. Щелкните на кружочке справа от пункта Audio Clip и выберите звук barn . Снимите галочку напротив Play on Awake

Вы можете увеличить размер значков в пользовательском интерфейсе Unity (Gizmos), нажав на Gizmos в вкладке Scene и отрегулировав положение ползунка.

Космический луч

Перетащите изображение с космическим лучем из вкладки Assets на сцену и добавьте коллайдер к нему (как это делать вы уже знаете). Это необходимо для обнаружения столкновения луча с нерасторопными коровамии. Убедитесь, что переключатель Is Trigger включен.

Скрипт луча

Создайте новый скрипт, повторяя шаги, проделанные ранее. Назовите скрипт Bullet и напишите в нем следующий код:

Using UnityEngine; using System.Collections; public class Bullet: MonoBehaviour { public AudioClip cowSound; // Используется для инициализации void Start() { renderer.enabled = false; /* Делает объект невидимым */ } // Обновлять каждый кадр void Update() { /* Обработка нажатия на правую кнопку мыши или касание экрана */ if (Input.GetButton("Fire1")) { renderer.enabled = true; /* Делает объект видимым */ /* Проиграть звук выстрела из корабля лучем */ audio.Play(); } if (renderer.enabled == true) { transform.position += Vector3.down * (Time.deltaTime * 2); } /* Check for out of bounds */ if (this.transform.position.y

Здесь много кода, но он вовсе не сложный. Давайте посмотрим, что происходит. Сначала мы создаем экземпляр AudioClip под названием cowSound , который мы будем использовать для хранения аудиофайла. Это еще один вариант проигрывания звука, если вы не хотите привязывать к объекту два аудиокомпонента. Мы объявили переменную как публичную, поэтому мы можем получить к ней доступ из вкладки Inspector . Нажмите на маленькую точку справа от cowSound и выберите аудиофайл cowSound .

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

Мы обнаруживаем касания экрана, делаем луч видимым и воспроизводим звук луча (см. ниже). Когла наш луч становится видимым, он начинает двигаться вниз чтобы попасть в корову.

Также мы предусмотрели проверку не оказался ли наш луч за границами сцены. Если это так, то мы возвращаем его на место и наше НЛО пожет стрелять снова (проверьте значения х и у луча в Инспекторе).

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

Добавляем звук для луча


Чтобы добавить звуковое сопровождение к нашему космическому лучу необходимо выбрать во вкладке Hierarchy или Scene наш лучик и нажать на кнопку Add Component во вкладке Inspector . Выберите Audio Source из раздела Audio . Снимите галочку с Play on Awake и нажмите маленькую точку справа от Audio Clip , чтобы выбрать звуковой файл по имени bizzed .

Добавляем корову

Перетащите нашу буренку из панели Assets на вкладку Сцена так, как показано на рисунке ниже:


Rigid Body 2D

Чтобы столкновение было зарегистрировано, вы должны проассоциировать компонент RigidBody2D хотя бы с одним из участвующих в нем объектов. Поскольку корова может столкнуться и с сараем, и с лучом, лучше всего добавить компонент к корове. Выберите нашу Буренку и нажмите на кнопку Add Component (Добавить компонент) во вкладке Inspector (Инспектор). Выберите пункт Physics 2D , а в нем RigidBody2D . Мы только что добавили компонент RigidBody2D . Установите в нем параметр Gravity Scale равным нулю:


Коллайдер коровы

Мы также должны привязать к корове коллайдер (как это делать вы уже знаете), чтобы определять столкновения с сараем и лучом. Не забудьте поставить галочку в чекбоксе Is Trigger в Inspector .

Скрипт движения коровы

Создайте скрипт, который будет отвечать за перемещение коровы и напишите в нем следующий код:

Using UnityEngine; using System.Collections; public class MoveCow: MonoBehaviour { public Vector3 moveSpeed; public float spawnTime = 2f; public float spawnDelay = 2f; // Используется для инициализации void Start() { moveSpeed = Vector3.left * Time.deltaTime; InvokeRepeating("ChangeSpeed", spawnDelay, spawnTime); } void ChangeSpeed() { moveSpeed = new Vector3(Random.Range(-1, -2), 0, 0) * 0.05f; } // Обновлять каждый кадр void Update() { transform.position += moveSpeed; } }

Класс MoveCow анимирует корову во время ее движения на экране с помощью переменной moveSpeed . Метод InvokeRepeating изменяет скорость коровы, заставляя ее пускаться галопом начиная с того момента, когда она достигает центра сцены. Это делает игру более сложной.

Создаем префаб для коровки

Теперь, когда мы привязали к корове все необходимые компоненты, пора конвертировать ее в префаб.

"Префаб – это GameObject для многократного использования, который хранится в Project View . Префаб может быть вставлен в любое количество сцен, несколько раз. Когда вы добавляете префаб в сцену, вы создаете его экземпляр. Все экземпляры префаба связаны с оригинальным префабом и, по сути, являются его клонами. Независимо от того, сколько копий вы создали для своего проекта, любые изменения, коснувшиеся оригинального префаба, будут применены ко всем его экземплярам".

Для преобразования коровы в префаб, перетащите корову из вкладки Иерархия в панель Assets . В результате название в Hierarchy станет синим.

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

Скрипт Spawner

Скрипт Spawner отвечает за отображение коров. Откройте MonoDevelop или ваш любимый C#-редактор и создайте новый скрипт:

Using UnityEngine; using System.Collections; public class Spawner: MonoBehaviour { public float spawnTime = 2f; public float spawnDelay = 2f; public GameObject cow; // Используется для инициализации void Start() { InvokeRepeating("Spawn", spawnDelay, spawnTime); } void Spawn() { /* Создание экземпляра коровы */ GameObject clone = Instantiate(cow, transform.position, transform.rotation) as GameObject; } }

Мы используем метод InvokeRepeating для клонирования коров с применением значений, установленных для spawnTime и spawnDelay . GameObject cow установлен на значение public и создан с использованием Inspector . Нажмите на маленькую точку справа и выберите префаб коровы.

Чтобы создать несколько экземпляров префаба коровы, используйте график коровы, который мы добавили к сцене несколько минут назад. Выделите ее и удалите ее компоненты. Затем добавьте скрипт Spawner.

Тестирование

Настало время протестировать нашу игру. Нажмите на Command + P для запуска игры в Unity. Если все работает как надо, вы готовы к заключительному шагу.

Настройки плеера

После успешного тестирования, можно сосредоточиться на настройках плеера. Выберите Build Settings из меню меню File и нажмите на кнопку Player Settings (настройки плеера). Теперь можно настроить параметры для вашего приложения, например Иконку приложения (Icon) или Картинку-заставку (Splash Image), которая показывается при запуске приложения. Используйте графические редакторы чтобы создать красивый значок для вашей игры. Unity покажет в разделе Иконки (Icon) вам необходимые размеры, которые зависят от вашего приложения.


Публикация

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

Xcode

Если вы делаете игры для iOS, вам понадобится Xcode, чтобы скомпилировать конечный двоичный код для приложения. Откройте проект Xcode и выберите Build из меню Product .

Заключение

В этом уроке мы узнали о новых 2D возможностях Unity, обнаружение столкновений и другие аспекты разработки игр под Unity.

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

Как создать игру в Unity

Казуальные игры в жанре match 3 (три в ряд) - одни из самых популярных на рынке. Многие играют в Candy Crush, Bejeweled и прочие. У этих игр простая цель: перемещать мозаичные элементы до тех пор, пока три одинаковых элемента не окажутся рядом. Когда это происходит, совпавшие элементы исчезают, а на их месте появляются другие. Игрок при этом набирает баллы.

В этом руководстве будут освещаться следующее:

  • Создание доски, заполненной мозаичными элементами
  • Выбор и отмена выбора мозаичных элементов
  • Идентификация соседних элементов с помощью raycasts
  • Замена элементов
  • Поиск совпадающих трех и более элементов с помощью raycasts
  • Заполнение пустых элементов
  • Ведение счета и подсчет движений

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

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

Share this article:

Related Articles

В первой главе вы найдете основную информацию по загрузке и установке Unity и подготовке первой сцены нашей игры.

Настройка среды в Unity

Начнем с самого простого: загрузки и настройки Unity .

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Для редактирования кода в Unity (4.0.1 и выше) служит редактор MonoDevelop. Если вы работаете в Windows, вы можете (и я вам советую) использовать альтернативый редактор Visual Studio 2013 Desktop (C#) для Windows , после чего в настройках Unity измените редактор по умолчанию на Visual Studio.

Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить UnityVS плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.

Mac OS X

Заметка о папке Resources : если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.

Наша первая игровая сцена

Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки "Play".

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


Как вы можете видеть здесь, у нас здесь 3 потомка для объекта Level .

В Unity можно создать пустой объект и использовать его в качестве "папки" для других игровых объектов. Это упростит структуру вашей сцены.

Убедитесь, что все они имеют координаты (0, 0, 0) и тогда вы сможете легко их найти! Пустые объекты никак не используют свои координаты, но они влияют на относительные координаты их потомков. Мы не будем говорить об этой теме в этом уроке, давайте просто обнулим координаты ныших пустых объектов.

Заполнение сцены

По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.

Для начала создайте эти пустые объекты:

Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level

В Level создайте 3 пустых объекта:

  • 0 - Background
  • 1 - Middleground
  • 2 - Foreground

Сохраните сцену в папке Scenes . Назовите ее как угодно, например Stage1 . Вот, что у нас получилось:

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

Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!

Добавляем фон в сцену

Наш первый фон будет статическим. Воспользуемся следующим изображением:


Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.

Создайте в Unity новый игровой объект Sprite на сцене.

Что такое спрайт?

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

Добавляем текстуру спрайта

Unity может автоматически установить фон для вашего спрайта. Если ничего такого не произошло, или если вы хотите изменить текстуру, перейдите на вкладку инспектора и выберите background : (фон)


Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе

Мой спрайт не появляется в диалоговом окне! Убедитесь, что вы находитесь в вкдадке Assets диалогового окна "Select Sprite" (Выбрать спрайт). Если вы видите диалоговое окно пустым, - не пугайтечсь. Дело в том, что для некоторых установок Unity, даже со свежим новым 2D проектом изображения импортируются как "Текстура", а не "Спрайт". Чтобы это исправить, необходимо выбрать изображение на панели "Проект", и в "Инспекторе", изменить свойство "Текстура Type" имущество "Sprite":

Итак, мы создали простой спрайт отображающий облака на небе. Давайте внесем изменения в сцену. В панели Hierarchy (Иерархия) выберите New Sprite . Переименуйте его в Background1 или что-то такое, что легко запомнить. Переименуйте его в Background1 или что-то такое, что легко запомнить. Затем переместите объект в нужное место: Level -> 0 - Background . Измените координаты на (0, 0, 0) .


Создайте копию фона и поместите его в (20, 0, 0) . Это должно отлично подойти к первой части.

Tip : Вы можете создать копию объекта с помощью клавиш cmd + D в OS X или ctrl + D Windows .

Слои со спрайтами

Следующее утверждение очевидно, но обладает некими неудобствами: мы отображения 2D мир. Это означает, что все изображения на одной и той же глубине, то есть 0 . И вы графический движок не знает, что отображать в первую очередь. Слои спрайтов позволяют нам обозначить, что находится спереди, а что сзади.

В Unity мы можем изменить "Z" наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:

Давайте добавим несколько слоев под наши нужды (используйте кнопку +):

Добавьте фоновый слой к вашему спрайту фона:

Настройка Order in Layer - это способ ограничить подслои. Спрайты с меньшим номером оказываются перед спрайтами с большими числами.

Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.

Добавление элементов фона

Также известных как props . Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:


Как видите, мы поместили две платформы в один файл. Это хороший способ научиться обрезать спрайты с помощью новых инструментов Unity .

Получение двух спрайтов из одного изображения

Выполняйте следующие действия:

  1. Импортируйте изображения в папку "Текстуры"
  2. Выберите спрайт Platform и перейдите к панели Инспектор
  3. Измените "Sprite Mode" на "Multiple"
  4. Нажмите на кнопку Sprite Editor (Редактор спрайта)

В новом окне (Sprite Editor) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:


Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:

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

В этом уроке проделаем эту операцию вручную. Назовите платформы platform1 и platform2 . Теперь, под файлом изображения, вы должны увидеть два спрайта отдельно:


Добавим их в сцену. Для этого мы будем выполнять те же действия что и для фона: создадим новый спрайт и выберим platform1 . Потом повторим эти действия для platform2 . Поместите их в объект 1 - Middleground . Убедитесь, что их позиция по оси Z равна нулю.


Prefabs (Префабы)


Таким образом вы создадите Prefab , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в Prefab , представляет собой новый ряд кнопок прямо под его именем:


Заметка о кнопках "Prefab": При последующей модификации игрового объекта, вы можете использовать кнопку "Apply", чтобы применить эти изменения к Prefab , или кнопку "Revert", чтобы отменить все изменения игрового объекта в свойстваъ Prefab . Кнопка "Select" переместит выбранные свойства в ассет Prefab в окне проекта (они будут выделены).

Создание префабов с объектами-платформами упростит их повторное использование. Просто перетащите Prefab на сцену, чтобы добавить копию. Попробуйте добавить другую платформу таким же образом.

Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0).

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

Слои

Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:

При переключении из 2D режима в 3D, в окне "Scene" (Сцена) вы будете четко видеть слои:


Кликнув на игровом объекте Main Camera , вы увидите, что флажок Projection установлен на Orthographic . Эта настройка позволяет камере визуализировать 2D игру без учета трехмерных свойств объектов. Имейте в виду, что даже если вы работаете с 2D объектами, Unity по-прежнему использует свой 3D движок для визуализации сцены. Рисунок выше это наглядно демонстрирует.

В следующем уроке:

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