Flappy Bird на Unity 3D

Учебные материалы для школы программирования. Часть 3

Spoiler

Часть 1 вы можете найти здесь

Часть 2 вы можете найти здесь

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

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

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

Следующим этапом, мы решили поговорить со второй половиной нашей целевой аудитории — детьми. Оказалось, ребята осознают, что надо научиться полезному, они «гуглят» курсы, смотрят кто чему учит. Но определяющим фактором для них выступает атмосфера занятия. Им важно, чувствовать себя в окружении единомышленников, совершать маленькие победы на каждом уроке, ощущать свободу и дружественность обстановки, и конечно же, здорово проводить время.

Решением стало снизить количество рассматриваемых тем из школьной программы, и добавить в проекты элемент узнаваемости, соревновательности и веселья! Так появилось занятие по сборке аналога игры Flappy Bird.

f00bccf5e9fdaa8860ce420a5fa25adc

Цель занятия: научиться работать с 2д-физикой и Canvas при использовании последнего на разных разрешениях целевой платформы.

Рассматриваем с учащимися темы:

  • включение AudioSource посредством Event-системы UI;

  • детектирование тапа по экрану посредством Event-системы UI — Спрайты;

  • система анимаций в разрезе 2D-игр;

  • коллайдеры в 2D и их редактирование;

  • сборка проекта под Android.

Поехали!

Создаём новый 2д-проект и импортируем приложенный ассет.


Проект практически готов, тем не менее, в нём отсутствует несколько ключевых элементов.

  • отсутствуют движущиеся трубы;

  • отсутствует прыжок по тапу по экрану;

  • отсутствует прыжок по тапу по экрану;

Для начала научимся пользоваться спрайтами. В ресурсах игры лежит файл sprites.png, который импортирован как спрайт с пометкой Multiple, это позволяет посредством кнопки SpriteEditor разрезать его на несколько одиночных спрайтов.

На sprites.png также находится неразмеченная область, в которой лежит небольшой квадрат, светло-голубого цвета. Добавим его в новый спрайт. Спрайт закидываем прямо в окно инспектора, если он отображается некорректно, выставляем ему нужный для корректного отображения слой. Далее этот квадрат можно использовать для помощи игроку или, наоборот, ловушек.

Стоит рассказать ребятам об особенностях работы коллайдеров, накладываемых на спрайт. Например, на птице установлен Polygon Collider 2D, позволяющий точно подобрать форму коллайдера под спрайт без необходимости делать его выпуклым для симуляции физики, как в 3D.

b2919e3bca924b3ca3d99bbdcfa106e6c5a037a98008aa7f15a1fc4344aa32a5

Анимация спрайтов

ecba8341241894e91d23eae3ba81cd66

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

135d6873be47ab256a3fe88abcb7aaed

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

9d8aa8f4ce934d00c7e919505ac0e8ec

Для компиляции под Android важно не забыть про удобное управление. Для мобильных игр, в большинстве своём, оно должно осуществляться одним пальцем. Делается это довольно просто (решение не является оптимальным, но оно самое простое).

В Canvas создаём панель и делаем её абсолютно прозрачной.

1f001224ab1859bb5ffdd739d2af0987

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


На панель необходимо закинуть компонент EventTrigger, и создать новое поле OnPointerEnter. В это поле закидываем птицу и выбираем внутри метод Jump.

cf000661f5c546924838e78b1b4deeba

После этого птица корректно начнет реагировать на нажатия по экрану.

Компиляция проекта под андроид

Зайдём в File→Preferences→External Tools. Внизу страницы находятся три поля — SDK, JDK и NDK. Рядом кнопки Browse и Download. Первая — для выставления нужной папки, в которую установлены sdk, jdk, ndk, вторая — перекидывает на страницу загрузки того или иного инструмента.

2b5ad9e52686313a67bbf80ab68e3357

Сперва необходимо установить Android studio и необходимые пакеты инструментов и SDK. На момент написания этих строк, устанавливалось API уровня 16 и 25. Также для компиляции необходим JDK.


NDK для данного проекта устанавливать нет необходимости.

Далее необходимо зайти в File→ Build Settings, выбрать платформу Android и нажать Switch Platform.

ac9f52fd6ebf775abc57f057c81fbdc3

Затем переходим в Edit → Project Settings → Player

В свитке Resolution and presentation выбираем расположение Landscape left, это заставляет экран всегда быть в одном положении и не поворачиваться, если включён автоповорот.

a93b67d1b6d4bf61349298aee6016cae

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

3b15805e7ec18ee10085b55ee925e3e7

По желанию можно выставить иконку и компилировать. На выходе мы получим APK файл игры.
Если подключить телефон на андроиде в режиме отладки и нажать Build and Run, то игра автоматически установится на телефон и запустится.

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

© Habrahabr.ru