разработка игры на unity шутер с видом сверху
Заказать уникальную дипломную работу- 41 41 страница
- 20 + 20 источников
- Добавлена 30.07.2024
- Содержание
- Часть работы
- Список литературы
1.Введение 2
1.1. Краткое описание игры 2
1.2 Цели и задачи дипломной работы 3
1.3. Актуальность проекта 4
2. Обзор литературы и анализ аналогов 5
2.1 Анализ игр в стилистике Hotline Miami 5
2.2 Обзор используемых технологий (Unity, C#) 8
2.3 Теоретические аспекты разработки 2D игр 12
3. Техническое задание 15
3.1 Цель игры и ее основная концепция 15
3.2 Описание игрового процесса 15
3.3 Описание интерфейса пользователя 19
4. Техническая реализация 21
4.1 Основы разработки на Unity 21
4.1.1 Обзор среды разработки Unity 21
4.1.2 Работа с 2D спрайтами и анимацией 22
4.2 Программирование на C# 23
4.2.1 Разработка игровой логики 23
4.2.2 Управление персонажами и объектами 26
4.2.3 Системы эффектов (звуковые и визуальные) 34
4.3 Работа с физикой и коллизиями 35
4.3.1 Обработка столкновений и физика движения 35
Заключение 38
Список литературы 40
EnemyHealth.cs: Отслеживание здоровья осуществляется через переменную health, которая устанавливается в максимальное значение (maxHealth) при старте и уменьшается функцией TakeDamage.Состояние "смерти" устанавливается при падении здоровья до нуля или ниже, что отключает коллайдер и меняет статус isDead.EnemyWeapon.cs: Управление вооружением включает функцию WeaponStrToID, которая преобразует строковое представление оружия в числовой идентификатор для управления поведением. Смена оружия осуществляется путем изменения переменной Weapon, которая определяется типом вооружения, выбранным в curentWeaponType.EnemyAnimationController.cs: Контроллер анимации использует переменную _animator для управления анимационными клипами, причем _animator.SetInteger устанавливает параметры, такие как тип оружия, а _animator.speed управляет скоростью анимации. Анимации смерти активируются через _animator.SetBool, когда isDead в EnemyHealth установлено в true.EnemyOptionScript.cs: В этом скрипте осуществляется перемещение врага между путевыми точками с помощью NavMeshAgent, который направляется к следующей точке по достижении текущей. Логика обнаружения игрока также основана на лучевом отслеживании (Physics2D.Raycast), которое активирует преследование, если игрок обнаружен в пределах заданной дистанции (_distanceDetected).Рисунок – блок-схема связей скриптов противниковНачало формыЭти скрипты в совокупности формируют интеллект противника в игре, делая его поведение реалистичным и предсказуемым в рамках заданных правил, что способствует созданию захватывающего геймплея и улучшает общее впечатление от игры.Рисунок – скрипт PlayerHealthВ логике игрока для скрипта PlayerHealth.cs, я реализовал систему здоровья, где у игрока есть максимальное здоровье и текущее здоровье, которое уменьшается при получении урона. Использовал метод TakeDamage(int damage), чтобы уменьшить текущее здоровье и активировать анимацию смерти с помощью DeadAnimation(), если здоровье опускается до нуля или ниже, что также останавливает игровое время, сигнализируя о конце игры.Рисунок – скрипт PlayerMovementДля PlayerMovement.cs, логика движения реализована с использованием компонента Rigidbody2D для физического перемещения по сцене. Получил входные данные от игрока через Input.GetAxis и применил их к вектору скорости Rigidbody, что позволяет игроку перемещаться в указанном направлении. Функция Looking() используется для поворота игрока в сторону курсора, создавая плавное и интуитивное управление персонажем.Рисунок – скрипт PlayerAnimationControllerPlayerAnimationController.cs связывает анимации игрока с его действиями, используя Animator. Скрипт определяет ID оружия с помощью метода WeaponAnimation(), который изменяет параметры аниматора, чтобы отражать текущее состояние и действия игрока, включая анимацию движения и стрельбы. Функция DeadAnimation() активируется, когда здоровье игрока падает до нуля, переводя анимацию в состояние смерти.Наконец, PlayerWeaponManager.cs управляет оружием и стрельбой игрока. Скрипт управляет изменениями текущего типа оружия и контролирует, может ли игрок стрелять, используя таймер между выстрелами. Метод AttackManager(int ID) определяет, какое оружие используется и когда производить выстрел, в то время как функция Shooting() создаёт пули и управляет звуками стрельбы.Эти скрипты вместе формируют основу интерактивности игрового персонажа, делая его реакции реалистичными и давая игроку полный контроль над действиями персонажа в игре.Рассмотрим серию скриптов, которые являются основой для управления оружием и пулями в игре на Unity. Эти скрипты включают в себя управление различными типами оружия, механизмы стрельбы, а также логику взаимодействия пуль с игровым миром. Они обеспечивают динамичное и интерактивное взаимодействие игрока с игровым окружением, а также реализацию важных аспектов боевой системы игры:Рисунок – скрипт WeaponВ скрипте Weapon.cs я определил базовую структуру класса Weapon, используя перечисление WeaponType, которое включает типы оружия: Null, Rifle, Shotgun, BigGun. Эта структура позволяет легко управлять разными типами оружия в игре и интегрировать их с остальной игровой логикой.Рисунок – скрипт LegacyBulletСкрипт LegacyBullet.cs контролирует поведение устаревших пуль. Я использовал переменную _speed для определения скорости полета пули. В методе Update(), пуля перемещается вперед с заданной скоростью, и уничтожается через 5 секунд после создания, чтобы избежать переполнения сцены объектами. При столкновении с врагом выводится сообщение в консоль.Рисунок – скрипт BulletВ Bullet.cs, я реализовал более сложную логику для пуль, включая назначение урона. Скрипт использует компонент Rigidbody2D для движения и присваивает пуле скорость с помощью переменной speed. При столкновении с объектами, не являющимися пулей или менеджером оружия, пуля вызывает уничтожение и наносит урон врагам или игроку.WeaponManager.cs управляет сменой оружия игрока. При взаимодействии с оружием, игрок может его подобрать, заменив текущее оружие. Это достигается через обнаружение коллизий и прослушивание ввода пользователя. Если игрок нажимает определенную кнопку, происходит смена оружия, и текущее оружие уничтожается.Скрипт BaseWeapon.cs является основой для всех оружий в игре. Он включает в себя механизм стрельбы и систему ожидания между выстрелами. Я реализовал функцию Shoot(), которая создает пули в заданной точке и с определенным интервалом, и функцию DropWeapon(), позволяющую игроку оставлять оружие.Эти скрипты формируют основу для работы с оружием и боеприпасами в игре, предоставляя разнообразные возможности для взаимодействия игрока с игровым миром и повышая динамику игрового процесса.4.2.3 Системы эффектов (звуковые и визуальные)Рисунок – скрипт AudioManagerАудио в игре я сделал с помощью скрипта AudioManager.cs, который управляет звуковыми эффектами, такими как стрельба. Скрипт использует компонент AudioSource для воспроизведения звуковых клипов, позволяя контролировать воспроизведение (например, включение цикличности и остановку) и состояние воспроизведения. Функция PlayShootAudio()активирует звук стрельбы, делая его циклическим для создания непрерывного звукового эффекта до тех пор, пока не будет вызвана StopShootAudio(), которая останавливает воспроизведение и выходит из цикла звучания. Это обеспечивает динамичное и реалистичное звуковое сопровождение действий игрока, улучшая общее впечатление от игры.Аудио компоненты в игре я реализовал с помощью трех ключевых звуковых дорожек, каждая из которых играет свою уникальную роль и обогащает аудиовизуальный опыт игрока.ShootRifleSoundShort.mp3этот звук используется для имитации выстрела из винтовки. Короткий и резкий звуковой эффект добавляет реалистичности боевым действиям в игре, усиливая ощущение присутствия и вовлеченности игрока.GameSound.mp3 основная тема игрового процесса, которая сопровождает игрока во время исследования мира или выполнения заданий. Музыкальное оформление не только создает подходящую атмосферу, но и помогает поддерживать настроение игры, будь то напряжение во время боя или исследование новых локаций.MenuSound.mp3 звуковое сопровождение для меню игры. Оно играет важную роль в создании первого впечатления о игре, а также поддерживает комфортное настроение при навигации по игровым меню, настройкам и прочим интерфейсным элементам.Каждый из этих звуков был подобран и интегрирован в игру таким образом, чтобы улучшить общее впечатление от игры и обеспечить качественное аудио оформление каждого аспекта игрового процесса.4.3 Работа с физикой и коллизиями4.3.1 Обработка столкновений и физика движенияВ игре реализована физика движений и столкновений, активно используя возможности Unity. Для объектов персонажа и врагов применён компонент Rigidbody2D, который добавляет им вес и позволяет реагировать на гравитацию и столкновения, создавая реалистичную физическую симуляцию.Обработка столкновений осуществляется через коллайдеры, точно соответствующие формам объектов. Это позволяет регистрировать контакты между игровыми элементами и принимать соответствующие действия. Например, в скрипте EnemyHealth.cs, при получении урона, враг реагирует уменьшением здоровья, и если его здоровье достигает нуля, активируется флаг смерти и отключается коллайдер, предотвращая дальнейшие взаимодействия.Физика движения реализована в скрипте PlayerMovement.cs, где ввод игрока через клавиатуру или мышь трансформируется в движение персонажа благодаря изменению вектора скорости Rigidbody2D.Рисунок – настройки компонента Rigidbody2DyPlayer Это позволяет игроку интуитивно управлять персонажем, перемещая его по игровому миру.Enemy.cs и EnemyOptionScript.cs демонстрируют поведение врагов, включая патрулирование, преследование игрока при обнаружении и принятие решений о движении или атаке на основе расстояния до игрока. Используя компонент NavMeshAgent, враги могут автоматически навигировать по сцене, обходя препятствия и следуя за игроком или двигаясь к следующей точке патрулирования.Рисунок – компонент NavMeshAgent и его настройкиЗаключениеВ ходе выполнения дипломной работы была разработана компьютерная игра " BURNING ROAD SOCHI", стилизованная под игры в духе Hotline Miami. Целью проекта являлась демонстрация навыков самостоятельной разработки игр на платформе Unity с использованием C#. Работа направлена на практическое применение полученных знаний для создания игры, объединяющей в себе развлекательные и образовательные аспекты.Проект оказался актуален за счет объединения теоретической подготовки с практическим опытом, что позволило глубже понять процесс разработки игр и получить ценный опыт в таких ключевых аспектах, как программирование, дизайн, тестирование и оптимизация.В ходе работы были выполнены следующие задачи:Анализ существующих аналогов и определение уникальных особенностей разрабатываемой игры.Разработка концепции, технического задания и дизайн-документации игры.Программирование игровой логики на C# с использованием Unity.Тестирование игры на наличие ошибок и багов.В результате была создана 2D экшен-игра, в которой игрок управляет персонажем, проходящим через уровни с целью уничтожить всех врагов и достичь конца каждого уровня. Игра отличается яркой палитрой, стилизованной под ретро, и сопровождается динамичным саундтреком, что создает уникальную атмосферу.Разработка "BURNING ROAD SOCHI" показала, что успешное выполнение проекта требует не только технических знаний, но и творческого подхода. Проект предоставил возможность применить теоретические знания на практике и показал потенциал для дальнейшего развития как в плане улучшения существующей игры, так и в создании новых проектов. Полученный опыт и знания могут быть использованы в будущих разработках, способствуя профессиональному росту в области игрового дизайна и программирования.Список литературыХокинг Дж. "Unity in Action: Многоплатформенная разработка игр на C#". – М.: ДМК Пресс, 2021. – 350 с.Бонд Джереми Г. "Введение в дизайн игр, прототипирование и разработка". – М.: Флинта; Наука, 2020. – 896 с.Баттфилд-Аддисон П., Мэннинг Дж., Ньюджент Т. "Книга рецептов по разработке игр на Unity". – М.: Эксмо, 2022. – 432 с.Ферроне Х. "Изучение C# разработкой игр на Unity". – М.: ДМК Пресс, 2021. – 480 с.Гейг М. "Разработка игр на Unity за 24 часа". – М.: Эксмо, 2020. – 512 с.Рид М. "C#: 3 книги в одной". – СПб.: БХВ-Петербург, 2021. – 688 с.Фелиция П. "Unity с нуля до профессионала (Основы)". – М.: Альпина Паблишер, 2022. – 256 с.Борромео Н.А. "Практическая разработка игр на Unity 2022". – М.: Эксмо, 2022. – 720 с.Хокинг Дж. "Unity in Action: Многоплатформенная разработка игр на C# с Unity 5". – М.: ДМК Пресс, 2020. – 374 с.Бонд Джереми Г. "Введение в дизайн, прототипирование и разработку игр". – СПб.: Флинта; Наука, 2021. – 920 с.Лукосек Грег. "Изучение C# разработкой игр с Unity 5.x". – СПб.: БХВ-Петербург, 2020. – 234 с.Торн А. "Unity 5.x на примерах". – М.: Эксмо, 2021. – 464 с.Авторы коллективные. "Программирование AI в играх на Unity". – М.: Эксмо; СПб.: Питер, 2021. – 256 с.Годболд Э. "Освоение 2D-разработки игр на Unity". – М.: Эксмо, 2022. – 512 с.Авторы коллективные. "Unity 5.x: Шейдеры и эффекты". – М.: ДМК Пресс, 2020. – 240 с.Сапио Ф. "Книга рецептов по интерфейсу Unity". – М.: Альпина Паблишер, 2021. – 280 с.Авторы коллективные. "Unity 5.x: Кулинарная книга". – СПб.: БХВ-Петербург, 2022. – 570 с.Авторы коллективные. "Научите себя разработке игр на Unity за 24 часа". – М.: Эксмо, 2020. – 448 с.Нистром Р. "Паттерны программирования в разработке игр". – СПб.: БХВ-Петербург, 2021. – 354 с.Шелл Джесси. "Искусство дизайна игр: Книга линз". – М.: ДМК Пресс, 2022. – 520 с.Начало формыНачало формы
1. Хокинг Дж. "Unity in Action: Многоплатформенная разработка игр на C#". – М.: ДМК Пресс, 2021. – 350 с.
2. Бонд Джереми Г. "Введение в дизайн игр, прототипирование и разработка". – М.: Флинта; Наука, 2020. – 896 с.
3. Баттфилд-Аддисон П., Мэннинг Дж., Ньюджент Т. "Книга рецептов по разработке игр на Unity". – М.: Эксмо, 2022. – 432 с.
4. Ферроне Х. "Изучение C# разработкой игр на Unity". – М.: ДМК Пресс, 2021. – 480 с.
5. Гейг М. "Разработка игр на Unity за 24 часа". – М.: Эксмо, 2020. – 512 с.
6. Рид М. "C#: 3 книги в одной". – СПб.: БХВ-Петербург, 2021. – 688 с.
7. Фелиция П. "Unity с нуля до профессионала (Основы)". – М.: Альпина Паблишер, 2022. – 256 с.
8. Борромео Н.А. "Практическая разработка игр на Unity 2022". – М.: Эксмо, 2022. – 720 с.
9. Хокинг Дж. "Unity in Action: Многоплатформенная разработка игр на C# с Unity 5". – М.: ДМК Пресс, 2020. – 374 с.
10. Бонд Джереми Г. "Введение в дизайн, прототипирование и разработку игр". – СПб.: Флинта; Наука, 2021. – 920 с.
11. Лукосек Грег. "Изучение C# разработкой игр с Unity 5.x". – СПб.: БХВ-Петербург, 2020. – 234 с.
12. Торн А. "Unity 5.x на примерах". – М.: Эксмо, 2021. – 464 с.
13. Авторы коллективные. "Программирование AI в играх на Unity". – М.: Эксмо; СПб.: Питер, 2021. – 256 с.
14. Годболд Э. "Освоение 2D-разработки игр на Unity". – М.: Эксмо, 2022. – 512 с.
15. Авторы коллективные. "Unity 5.x: Шейдеры и эффекты". – М.: ДМК Пресс, 2020. – 240 с.
16. Сапио Ф. "Книга рецептов по интерфейсу Unity". – М.: Альпина Паблишер, 2021. – 280 с.
17. Авторы коллективные. "Unity 5.x: Кулинарная книга". – СПб.: БХВ-Петербург, 2022. – 570 с.
18. Авторы коллективные. "Научите себя разработке игр на Unity за 24 часа". – М.: Эксмо, 2020. – 448 с.
19. Нистром Р. "Паттерны программирования в разработке игр". – СПб.: БХВ-Петербург, 2021. – 354 с.
20. Шелл Джесси. "Искусство дизайна игр: Книга линз". – М.: ДМК Пресс, 2022. – 520 с.