Главная страница

вкр. Диплом. Фаткуллин А. А


Скачать 1.1 Mb.
НазваниеФаткуллин А. А
Дата01.05.2023
Размер1.1 Mb.
Формат файлаdocx
Имя файлаДиплом.docx
ТипДиплом
#1100407
страница5 из 6
1   2   3   4   5   6

Разработка игрового приложения


Идей для игры послужила игра Flappy Bird, в данной игре всё управление заключается в нажатии на экран для того, что бы игровой персонаж набирал высоту, что бы предотвратить столкновение с препятствиями, цель игры набрать как можно большее количество очков. Было принято решение воспроизвести игру на Unity, в то время как оригинал создан на Java. Игра крайне простая, механика игры крайне примитивна. Первое, при нажатии на экран птица должна взлетать, затем начинать снижении. Второе это при пролете между труб игроку должно засчитываться очко, при столкновении игра заканчивается. Ну а так же игра не имеет конца, то есть трубы должны постоянно появляется с произвольной высотой, но не выходя за границы экрана. Начинаем разработку с запуском Unity Hub. Здесь хранится список всех проектов, а так же вы можете видеть расположение любого вашего проекта на вашем компьютере.

В окне представленном на рисунке 3. окно Unity Hub необходимо нажать кнопку «New», после чего откроется окно настроек проекта представленное на рисунке 4. окно настроек проекта в Unity Hub



Рис 3. Окно Unity Hub



Рис 4. Окно настроек Unity Hub

Нам необходимо выбрать тип приложения 2D, так же как-либо назвать свой проект и выбрать местоположение проекта на компьютере, после чего нажать кнопку «Create». На этом готово, проект создан, но он совсем пустой.
Для создания игры нам так же необходимо использовать какие-либо текстуры объектов, можно использовать текстуры объектов, которые вы сами и нарисуете, можно использовать готовые в формате png. Нами было принято решение использовать готовые текстуры объектов, то что нам нужно было крайне легко найти на яндекс картинки. Заранее скачиваем и переносим все текстуры объектов в отдельную папку, вот что у нас было заготовлено. Всего понадобилось три текстуры объектов, птица, труба и кнопка «Старт».

Текстуры объектов продемонстрированы на рисунке 5. текстуры объектов для приложения.



Рис 5. Текстуры объектов для приложения

Так же вы можете найти полный набор текстур - «ассеты» для Unity, где будут текстуры анимации персонажа, разные текстуры врагов, целей, каких-либо объектов окружения и взаимодействия.

Вернёмся к нашему проекту. Первым делом нужно задать настройки для построения приложения под Android системы, для этого выбираем File>Build settings и в открывшемся окне представленном на рисунке 6. Build settings выбираем Android и нажимаем «Switch platform».



Рис 6. Build settings

Далее переносим все наши текстуры в нижнюю панель Assets в рабочем окне Unity. Что бы перенести объект на сцену, просто нажимаете и удерживаете объект и переносите на сцену. Далее вы можете настроить размер объекта и положение объекта на сцене и экране.

Первым делом мы прописываем код для нашей птицы, код представлен на рисунке 7. код игрового персонажа.ц4



Рис 7. Код игрового персонажа

Так же были добавлены комментарии для поправок, в случае если что-то пойдет не так. В данном коде мы подключаем и настраиваем компонент RigidBody, который отвечает за «физику» нашей птицы, а именно сила прыжка, так же настраивается управления, необходимо что бы при нажатии на экран птица направлялась вверх с определенной силой. Так же в конце мы настраиваем collision – соприкосновения птицы с препятствиями, в нашем случае это трубы, так же есть условие , что объект должен иметь тэг «Enemy». И в заключении в случае если птица коснется трубы, то время остановится и появится кнопка рестарта. По мимо RigidBody к птице нужно подключить Circle collider 2D, данный компонент задаст так называемый скелет нашей птицы, используется круглый скелет, что бы избежать случайных столкновений. И данный компонент подключается уже непосредственно в Unity.

Теперь разберём код персонажа более подробно. Рассмотрим всё по порядку, начнём с подключения компонента RigidBody и кнопки перезапуска, рисунок 8. подключение RigidBody и кнопки перезапуска.



Рис 8. Подключения RigidBody и кнопки перезапуска

На рисунке выше добавляем новую величину  force, которая обозначает силу прыжка. А так же подключаем компонент RigidBody, что бы наш персонаж имел «твёрдое тело», иначе персонаж не будет летать.

Далее задаем скорость движения и приводим в активное состояние компонент RigidBody. Наглядно нужный код вы можете видеть на рисунке 9. скорость движения.


Рис 9. Скорость движения

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



Рис 10. Управление и направление силы

Всё записываем как условие, к контрено фиксируем нажатие, а затем даём персонажу силу направленную вверх.

Перехожим к ещё одному очень важному моменту, а именно столкновение птицы с трубам. Здесь пригодится цикл, который будет фиксировать касания птицы с препятствиями, имеющими тэг «Enemy». Если столкновение происходит, то птица исчезает и время останавливает. Более подробно код можно рассмотреть на рисунке 11. столкновение объектов.



Рис 11. Столкновение объектов

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

Так же в данном скрипте задаётся периодичность появления труб и позиция появления, позиция произвольная, но не выходящая за верхние или нижние границы экрана. Дополнительно в PipeSpawner производится оптимизация приложения, задаётся удаления труб которые покидают пределы экрана, трубы «существуют» 10 секунд, после чего удаляются, что бы не нагружать устройство. Наглядно увидеть код скрипта для движения труб вы можете на рисунке 12. код для движения труб



Рис 12. Код для движения труб

Далее переходим к скрипту для появления труб. Что бы было проще, группируем объекты труб сверху и снизу в группу трубы. Далее уже скрипт будет предназначен для этой группы и при настройке появление труб на произвольной высоте, свободное место для пролёта птицы будет везде одинаковых, будет лишь меняться высота труб, а так же их общее положении на экране. Так же здесь прописываем частоту появление группы труб. Как вы можете наблюдать на рисунке 13. код появления труб, мы используем цикл, каждые две секунды появляется новая группа труб, с произвольной позицией по координате Y. Так же указываем диапазон положений Y, в нашем случает от -1 до 4. И в заключении прописываем условие удалять предыдущие объекты труб, а не нашу группу, в общем, что бы Unity было что создавать.



Рис 13. Код появления труб

Теперь перейдем к подсчету очков. Для подсчета очков в самом Unity создали пустой объект и дали ему компонент Box Collider 2D, что бы наша птица могла, как бы соприкасаться с ним, на самом же деле это просто прозрачное поле между верхней и нижней трубой. Всё это назвали ScoreZone и присвоили тэг «Score», наглядно вы можете увидеть это на рисунке 14. ScoreZone



Рис 14. ScoreZone

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

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



Рис 15. Подключение Canvas

Скрипт для подсчета очков представлен наглядно на рисунке 16. код накопления очков. Здесь добавляется переменная для очков и переменная для текста который будет отображать количество набранных очков. При старте количество очков всегда будет 0. Так же в данном скрипте будет связь с нашей ScoreZone, а именно если птичка будет проходит через объект с тэгом «Score», то будет прибавляться одно очко. Не забываем в данном скрипте подключить библиотеку UI, для этого после всех подключенных библиотек необходимо дописать:

Using UnityEngine.UI



Рис 16. Код накопления очков

Переходим к добавлению последнего элемента, а именно кнопки рестарта. Добавляем объект кнопка на сцену и накладываем на него текстуру, которую скачали, а далее переходим к написанию скрипту, код скрипта на рисунке 17. код перезапуска игры.



Рис 17. Код перезапуска игры

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


    1. 1   2   3   4   5   6


написать администратору сайта