топ книг по unity
🎮 Топ-10 книг по геймдеву и о геймдеве на русском языке
1. Разработка игр на Unity 2018 за 24 часа (Эксмо, 2020 г.)
Если вы только узнали о Unity и не представляете как его изучать, эта книга для вас. Всего за 24 урока она позволит освоить популярный игровой движок версии 2018. Используя пошаговый подход, автор затрагивает все важные темы: от азов до сложной игровой физики, анимации и методов развертывания на мобильных устройствах. Каждый урок основан на пройденном материале и дает читателю основу для следующих занятий. Книга также содержит практические примеры и тесты с упражнениями для закрепления полученных знаний.
2. Разработка игр на Unreal Engine 4 за 24 часа (Эксмо, 2019 г.)
Авторы: Арам Куксон, Райан Даулингсока, Клинтон Крамплер.
Конечно ни одна книга не позволит изучить Unreal Engine 4 за 24 часа, однако авторы написали отличный обзор движка и дали читателям возможность лучше познакомиться с основами работы с ним. Книга рассказывает об интерфейсе Unreal Engine 4, его рабочих процессах, мощных редакторах и других инструментах. Прочитав ее, вы научитесь создавать эффекты, писать сценарии и реализовывать физику.
3. Unity в действии. Мультиплатформенная разработка на C# (Питер, 2019 г.)
Автор: Джозеф Хокинг.
Книга посвящена взаимодействию платформы Unity и языка программирования C#. Из нее читатели узнают о необходимых инструментах для создания игры и смогут понять базовые концепции ее разработки. Каждый пример освещает определенные функции Unity: по мере прочтения вы приобретете всесторонние навыки для создания 2D- и 3D-проектов.
4. Unity и C#. Геймдев от идеи до реализации (Питер, 2020 г.)
Автор: Джереми Гибсон Бонд.
Книга обобщает практический опыт создания игр с использованием современных методов и инструментов. Она проста для понимания и полезна для начинающих разработчиков. П рофессор Джереми Гибсон Бонд более десяти лет преподавал игровой дизайн и создавал популярные игры. В своей работе он освещает наиболее важные темы: теорию игрового дизайна, быстрое итеративное прототипирование и практическое программирование.
5. Геймдизайн (Альпина Паблишер, 2019 г.)
Книга показывает весь процесс проектирования и объясняет фундаментальные принципы правильного игрового дизайна, рассматривая проблемы с максимально возможного количества точек зрения. Автор задает читателю более 100 насущных вопросов, которые нужно будет решить в процессе создания приложения.
6. Изучаем C++ через программирование игр (Питер, 2021 г.)
Автор: Майкл Доусон.
Книга подробно объясняет базовые темы, необходимые для начала работы с С++ с нуля. Автор использует альтернативный подход к изучению программирования: вместо скучных математических задачек он разбирает основы языка на примере разработки игр, делая нелегкий предмет более интересным.
7. Unreal Engine VR для разработчиков (Эксмо, 2019 г.)
Автор: Митч Маккефри.
Известный разработчик объединяет передовой опыт и общие парадигмы взаимодействия Unreal Engine и VR в одной книге. Протестированные им примеры содержат пошаговые инструкции по правильной работе с этим движком. Описанные методы помогут вам овладеть необходимыми в индустрии разработки игр знаниями.
8. Разработка игр и теория развлечений (ДМК, 2018 г.)
Книга знакомит читателей с основами современных видеоигр. Ветеран геймдизайна Рэф Костер внимательно изучил концепцию развлечений и почему этот элемент – самый важный в любой игре.
9. Повелители DOOM. Как два парня создали культовый шутер и раскачали индустрию видеоигр (Эксмо, 2019 г.)
Автор: Дэвид Кушнер.
Книгу стоит прочесть всем интересующимся ранними этапами развития компьютерных игр.
10. Кровь, пот и пиксели (Эксмо, 2019 г.)
Автор: Джейсон Шреер.
Автор отправляет читателей за кулисы разработки видеоигр, где может трудиться тысяча перегруженных работой аутсайдеров или одинокий гений-компьютерщик. Книга рассказывает о художественных проблемах, технических возможностях и требованиях игрового рынка. Автор показывает, что доведение любой игры до завершения – это чудо.
Книга будет интересна не только потенциальным разработчикам, но и любителям компьютерных игр. Это отличный способ заглянуть по другую сторону монитора и сделать выводы о том, как сложно заставить набор пикселей на экране меняться в задуманном направлении.
Если вы не увидели еще одну достойную книгу по теме в этой десятке, не стесняйтесь рекомендовать ее в комментариях. Если вы читали перечисленные книги, дополните описания – нам важно ваше мнение.
ТОП-10 книг по C#: от новичка до профессионала
Книги по C# начального уровня
Мюллер Д. П. C# для чайников
Даже если вы никогда не имели дела с программированием, это пособие поможет освоить язык C#. Из книги вы узнаете о конструкциях и операторах C#, а также ключевых концепциях ООП реализованных языке.
Мюллер Д. П. C# для чайников
Бонд Д. Г. Unity и C#. Геймдев от идеи до реализации
Наши читатели часто задают вопросы о Unity, поэтому мы не могли упомянуть эту книгу. Подойдет для тех, кто любит знакомиться с языком на практике, через создание игр.
Рецензия пользователя sm0l на сайте LiveLib
Средний уровень
Скит. C# для профессионалов. Тонкости программирования
«C# для профессионалов: тонкости программирования» (C# in Depth) является обновлением предыдущего издания, ставшего бестселлером. Книга предлагает уникальные сведения о сложных областях и темных закоулках языка. Советуем третье издание, оно обычно и дешевле, и в нем лучше перевод.
Скит. C# для профессионалов. Тонкости программирования
Албахари. C# 7.0. Справочник. Полное описание языка
Албахари. C# 7.0. Справочник. Полное описание языка
Албахари. C# 7.0. Карманный справочник
В начале 2020 года в издательстве Диалектика вышла обновленная версия справочника, описывающая версию С# 8.0.
Албахари. C# 7.0. Карманный справочник
Хокинг. Unity в действии. Мультиплатформенная разработка на C#
Еще немного о применении C# для создания игр. В этом издании внимание уделено проектированию двумерных игр, фундаментальные концепции которых читатель может применить на практике и построить сложный двумерный платформер. Эту книгу можно смело назвать введением в Unity для профессиональных программистов. Джозеф Хокинг дает людям, имеющим опыт разработки, всю необходимую информацию, которая поможет быстро освоить новый инструмент и приступить к созданию новых игр. А учиться лучше всего на конкретных проектах и практических заданиях.
Книга не подойдет для совсем новичков, желательно представлять концепцию ООП, поэтому мы не стали помещать ее в первый раздел статьи.
Хокинг. Unity в действии. Мультиплатформенная разработка на C#
Продвинутый уровень (технологии на основе C#)
Фримен. ASP.NET Core MVC 2 с примерами на C# для профессионалов
Фримен. ASP.NET Core MVC 2 с примерами на C# для профессионалов
Платформа Windows Presentation Foundation (WPF) от Microsoft предоставляет инфраструктуру разработки, предназначенную для построения высококачественных пользовательских интерфейсов для операционной системы Windows. Книга начинается с построения прочного фундамента из элементарных концепций, подкрепленного существующими знаниями языка C#. Затем предлагается обсуждение сложных концепций с их демонстрацией на полезных примерах, которые подчеркивают получаемую экономию времени и затраченных усилий.
Библиотека программиста любит язык C# и регулярно пишет о нем статьи. Вот три последних:
Если вы не увидели вашу любимую книгу в этой десятке, пожалуйста, не стесняйтесь порекомендовать ее в комментариях.
Посоветуйте источник для изучения unity
На данный момент изучаю c #, основы уже знаю. Хочу начать изучать unity, но дельных курсов найти не смог. Посоветуйте пожалуйста какой-то источник, где можно углубленно изучить unity
Комментарий удален по просьбе пользователя
Всего станет больше.
Игры, которые у нас не переводят.
Книги, фильмы, сайты и многое-многое другое.
Комментарий удален по просьбе пользователя
Достаточно будет тех. английского. И базовой документации по Unity что бы начать.
Комментарий удален по просьбе пользователя
спасибо, очень помог
Комментарий удален по просьбе пользователя
Комментарий удален по просьбе пользователя ред.
Комментарий удален по просьбе пользователя
Простите, а не подскажете, где вы нашли эту демку?
Комментарий удален по просьбе пользователя
Спасибо большое, посмотрю.
Почему? Что плохого в просьбе покидать уроки?
Говноигр и так слишком много
И что? Годных тоже немало.
Вот это я обосрался когда понял, что ссылки приложением потом нельзя будет удалить в режиме редактирования 🙁
Ничо, норм, всё норм )
На Udemy хорошие курсы от Бена Тристема.
Комментарий удален по просьбе пользователя
Я могу сделать гайд, если нужно. Только по какой теме?)
Я делаю гайды по Unity. И «учебник» заодно пишу)
Правда, статьи там для тех, кто с Unity уже знаком. Надеюсь, будет полезно. На вырост, так сказать.
Туториалы порождают вуду код и иллюзию знаний. С минимальными знаниями лучше сразу читать доки.
Сам предпочитаю всё исключительно на английском. Но на русском я нашёл, к примеру, вот этот плейлист уроков https://www.youtube.com/watch?v=m0sKo81DZME
А под эту https://www.youtube.com/watch?v=bSmACXYUyKY запись стрима я раза 3 очень сладко засыпал.
Книга «Unity для разработчика. Мобильные мультиплатформенные игры»
6. Реализация игрового процесса с ловушками и целями
Большая часть этой игры заключается в обработке касаний разных объектов — ловушек, сокровища, точки выхода и т.д. Учитывая, насколько важно определение момента касания конкретных объектов, создадим общий сценарий, генерирующий событие Unity Event, когда любой объект с тегом «Player» касается их. Это событие будет затем по-разному настраиваться для различных объектов: ловушки будут сообщать диспетчеру игры Game Manager, что гномик получил повреждение, сокровище будет сообщать, что гномик подобрал сокровище, а точка выхода — что гномик достиг выхода.
Теперь создайте новый сценарий на C# в файле с именем SignalOnTouch.cs и добавьте в него следующий код:
Основой класса SignalOnTouch является метод SendSignal, который вызывается методами OnCollisionEnter2D и OnTriggerEnter2D. Последние два метода вызывает движок Unity, когда объект касается коллайдера или когда объект входит в область действия триггера. Метод SendSignal проверяет тег объекта и, если он хранит строку «Player», генерирует событие Unity.
Теперь, имея класс SignalOnTouch, можно добавить первую ловушку.
1. Импортируйте спрайты объектов. Импортируйте содержимое папки Sprites/Objects в проект.
2. Добавьте коричневые шипы. Найдите спрайт SpikesBrown и перетащите его в сцену.
3. Настройте объект с шипами. Добавьте в объект с шипами компоненты PolygonCollider2D и SignalOnTouch.
Добавьте новую функцию в событие SignalOnTouch. Перетащите диспетчер игры Game Manager в поле объекта и выберите функцию GameManager.TrapTouched, как показано на рис. 6.1.
4. Преобразуйте объект с шипами в шаблон. Перетащите объект SpikesBrown из панели Hierarchy (Иерархия) в папку Level. В результате будет создан шаблон, с помощью которого можно будет создать несколько копий объекта.
5. Протестируйте. Запустите игру. Сделайте так, чтобы гномик попал на шипы. Этот гномик должен упасть и появиться заново!
Сокровище и выход
После успешного добавления ловушки, убивающей гномика, самое время добавить возможность выиграть в игре. Для этого добавим два новых элемента: сокровище и точку выхода.
Сокровище — это спрайт на дне колодца, который обнаруживает касание гномика и посылает сигнал диспетчеру игры Game Manager. Когда это происходит, диспетчер игры сообщает гномику, что тот ухватил сокровище, после чего спрайт с изображением пустой руки гномика заменяется спрайтом с изображением руки, удерживающей сокровище.
Точка выхода — это еще один спрайт, находящийся в верхней части колодца. Подобно сокровищу, он обнаруживает касание гномика и извещает об этом диспетчер игры. Если в этот момент гномик держит сокровище, игроку присуждается победа в игре.
Основную работу в этих двух объектах выполняет компонент SignalOnTouch — когда гномик достигает точки выхода, должен вызываться метод ExitReached диспетчера игры, а когда гномик касается сокровища, должен вызываться метод TreasureCollected.
Начнем с создания точки выхода, а потом добавим сокровище.
Создание точки выхода
Прежде всего, импортируем спрайты.
1. Импортируйте спрайты Level Background. Скопируйте папку Sprites/Background из загруженного пакета с ресурсами в папку Sprites проекта.
2. Добавьте спрайт Top. Поместите его чуть ниже объекта Rope. Этот спрайт будет служить точкой выхода.
3. Настройте спрайт. Добавьте в спрайт компонент Box Collider 2D и установите флажок Is Trigger. Щелкните по кнопке Edit Collider (Редактировать коллайдер) и измените размеры коллайдера, чтобы он был коротким и широким, как показано на рис. 6.2.
4. Настройте отправку сигнала диспетчеру игры в момент касания спрайта. Добавьте в спрайт компонент SignalOnTouch. Добавьте элемент в список событий компонента и соедините его с диспетчером игры Game Manager. Выберите функцию GameManager.ExitReached. Теперь касание гномика точки выхода будет вызывать метод ExitReached диспетчера игры Game Manager.
Теперь добавим сокровище.
Сокровище работает так: по умолчанию объект Treasure отображает спрайт с изображением сокровища. Когда гномик касается его, вызывается метод TreasureCollected диспетчера игры Game Manager и на месте сокровища отображается другой спрайт, показывающий, что сокровище подобрано. Когда гномик погибает, объект Treasure возвращается в исходное состояние и вновь отображает спрайт с изображением сокровища.
Так как смена спрайтов в игре будет выполняться довольно часто — вы убедитесь в этом, когда мы займемся улучшением графики, — имеет смысл создать универсальный класс смены спрайтов и задействовать его в объекте сокровища.
Создайте новый сценарий на C# с именем SpriteSwapper.cs. Добавьте в него следующий код:
Класс SpriteSwapper предназначен для двух операций: когда вызывается метод SwapSprite, визуализатору SpriteRenderer, подключенному к игровому объекту, передается другой спрайт для отображения. При этом исходный спрайт сохраняется в переменной. Когда вызывается метод ResetSprite, визуализатору передается исходный спрайт для отображения.
Теперь можно создать и настроить объект Treasure.
1. Добавьте спрайт с изображением сокровища. Найдите спрайт TreasurePresent и добавьте его в сцену. Разместите его поближе ко дну, но с таким расчетом, чтобы гномик мог достать его.
2. Добавьте коллайдер для сокровища. Выберите спрайт с изображением сокровища и добавьте в него компонент Box Collider 2D. Установите флажок на значении Is Trigger.
3. Добавьте и настройте сценарий смены спрайта. Добавьте компонент SpriteSwapper. Перетащите сам спрайт с изображением сокровища в поле Sprite Renderer этого компонента. Затем найдите спрайт TreasureAbsent и перетащите его в поле Sprite To Use компонента, выполняющего смену спрайтов.
4. Добавьте и настройте компонент отправки сигнала в ответ на касание. Добавьте компонент SignalOnTouch. Добавьте два элемента в список On Touch:
В результате настройки в панели инспектора должны выглядеть так, как показано на рис. 6.3.
6. Протестируйте игру. Запустите игру и коснитесь сокровища. В этот момент сокровище исчезнет; если после этого гномик погибнет, сокровище вновь появится на своем месте после создания нового гномика.
Добавление фона
В настоящее время действие игры разворачивается на унылом синем фоне, заданном в Unity по умолчанию. В этом разделе мы добавим временный фон, который заменим фоновым спрайтом, когда приступим к улучшению графического оформления игры.
1. Добавьте фоновый прямоугольник. Откройте меню GameObject (Игровой объект) и выберите пункт 3D ObjectQuad (3D ОбъектПрямоугольник). Дайте новому объекту имя Background.
2. Переместите фон на задний план. Чтобы избежать ситуации, когда прямоугольный фон будет рисоваться поверх игровых спрайтов, переместите его на задний план, подальше от камеры. Для этого присвойте координате Z прямоугольника значение 10.
3. Установите ширину и высоту фонового прямоугольника. Включите инструмент Rect (Прямоугольник), нажав клавишу T, а затем, используя маркеры, установите размеры прямоугольника. Верхняя граница фона должна быть на одном уровне со спрайтом в верхней части сцены, а нижняя — с сокровищем (рис. 6.4).
4. Протестируйте игру. После запуска фон игрового поля должен окраситься в темно-серый цвет.
Для Хаброжителей скидка 20% по купону — Unity
Книга «Unity в действии. Мультиплатформенная разработка на C#. 2-е межд. издание»
Привет, Хаброжители! Второе издание «Unity в действии» было полностью переработано, чтобы познакомить вас с новыми подходами и идеями, позволяющими максимально эффективно использовать Unity для разработки игр. Больше внимания уделено проектированию двумерных игр, фундаментальные концепции которых читатель может применить на практике и построить сложный двумерный платформер. Эту книгу можно смело назвать введением в Unity для профессиональных программистов. Джозеф Хокинг дает людям, имеющим опыт разработки, всю необходимую информацию, которая поможет быстро освоить новый инструмент и приступить к созданию новых игр. А учиться лучше всего на конкретных проектах и практических заданиях.
Unity зачастую представляют как набор компонентов, не требующих программирования, что в корне неверно. Для создания успешной игры необходимо многое: великолепная работа художника, программистские навыки, интересная история, увлекательный геймплей, дружная и слаженная работа команды разработчиков. А еще нельзя забывать про безупречную визуализацию и качественную работу на всех платформах — от игровых консолей до мобильных телефонов. Unity объединяет мощный движок, возможности профессионального программирования и творчества дизайнеров, позволяя воплотить в жизнь самые невероятные и амбициозные проекты.
Осваивайте Unity и быстрее приступайте к созданию собственных игр!
Структура книги
Глава 1 знакомит с Unity — межплатформенной средой разработки игр. Вы освоите базовую систему компонентов, лежащую в основе Unity, а также научитесь писать и выполнять базовые сценарии.
В главе 2 мы перейдем к написанию программы, демонстрирующей движение в трехмерном пространстве, попутно рассмотрев такие темы, как ввод с помощью мыши и клавиатуры. Детально объясняется определение положения объектов в трехмерном пространстве и операции их поворота.
В главе 3 мы превратим демонстрационную программу в шутер от первого лица, продемонстрировав метод испускания луча и основы искусственного интеллекта. Испускание луча (мы создаем в сцене линию и смотрим, с чем она пересечется) требуется во всех вариантах игр.
Глава 4 посвящена импорту и созданию игровых ресурсов. Это единственная глава в книге, в которой код не играет центральной роли, так как каждому проекту требуются (базовые) модели и текстуры.
Глава 5 научит вас создавать в Unity двумерные игры. Хотя изначально этот инструмент предназначался исключительно для создания трехмерной графики, сейчас в нем прекрасно поддерживается двумерная графика.
В главе 6 продолжается объяснение принципов создания двумерных игр на примере платформера. В частности, мы реализуем элементы управления, имитацию физической среды и анимацию для персонажа.
Глава 7 знакомит с новейшей GUI-функциональностью в Unity. Пользовательский интерфейс требуется всем играм, а последние версии Unity могут похвастаться улучшенной системой создания пользовательского интерфейса.
В главе 8 мы создадим еще одну программу, демонстрирующую движение в трехмерном пространстве, однако на этот раз с точки зрения стороннего наблюдателя. Реализация элементов управления третьим лицом даст вам представление о ключевых математических операциях в трехмерном пространстве, кроме того, вы научитесь работать с анимированными персонажами.
Глава 9 покажет способы реализации интерактивных устройств и элементов в игре. У игрока будет ряд способов применения этих устройств, в том числе прямым касанием, прикосновением к пусковым устройствам внутри игры или нажатием кнопки контроллера.
Глава 10 учит взаимодействию со Всемирной паутиной. Вы узнаете, как отправить и получить данные с помощью стандартных технологий, таких как HTTP-запросы на получение с сервера XML-данных.
В главе 11 вы научитесь добавлять в игры звук. В Unity замечательно поддерживаются как короткие звуковые эффекты, так и долгие музыкальные фонограммы; оба варианта звукового сопровождения критически важны почти для всех видеоигр.
В главе 12 мы соберем воедино фрагменты из различных глав, чтобы получить в итоге одну игру. Кроме того, вы научитесь программировать элементы управления, манипуляция которыми осуществляется с помощью мыши, и сохранять игру.
Об авторе
Джозеф Хокинг живет в Чикаго и занимается разработкой программного обеспечения для интерактивных сред. Он работает в фирме InContext Solutions. Первое издание данной книги было написано в период его работы в компании Synapse Games. Кроме того, он преподавал разработку игр в Университете Иллинойса, в Чикагском институте искусств и в колледже Колумбия. Его сайт www.newarteest.com.
Отрывок. 6.4.2. Толчок вверх
Давайте научим персонаж прыгать. Для этого при нажатии кнопки Jump персонаж должно толкать вверх. Скорость перемещения по горизонтали редактируется в коде напрямую, а с движением по вертикали мы поступим по-другому, чтобы не мешать действию силы тяжести. Дело в том, что на объект могут влиять несколько сил одновременно, поэтому добавим к нему силу, направленную вверх. Вставьте в сценарий движения этот код.
Обратите внимание на команду AddForce(). Восходящая сила добавляется к компоненту Rigidbody в импульсном режиме; импульс — это внезапный толчок в отличие от непрерывно действующей силы. В коде такой толчок возникает после нажатия клавиши Пробел. При этом на персонаж продолжает действовать сила тяжести, благодаря чему после прыжка он описывает красивую дугу.
Но, возможно, вы уже обратили внимание на один недостаток, устранением которого мы сейчас и займемся.
6.4.3. Распознавание поверхности
У элемента управления прыжком есть один маленький недостаток: возможность прыгать в полете (когда персонаж уже подпрыгнул или когда он падает). Нажатие клавиши Пробел даже в этом случае даст импульс вверх, хотя этого делать нельзя. Элемент управления прыжком должен срабатывать только для стоящего на платформе персонажа. А значит, нужно научиться определять, стоит ли персонаж на поверхности.
Этот код лишает персонаж способности к прыжкам в воздухе. Он проверяет, есть ли под персонажем коллайдер, и учитывает результат проверки в условии для совершения прыжка. Первым делом определяются границы примитива столкновений нашего персонажа, а затем в области с такой же шириной непосредственно под ногами персонажа ищутся перекрывающиеся коллайдеры. Результат проверки сохраняется в переменную grounded и используется в условном операторе.
6.5. Дополнительные возможности для платформера
Итак, мы разобрались с нюансами реализации перемещений, ходьбы и прыжков персонажа. Дополним демоверсию нашей игры новыми функциональными возможностями окружающей среды.
ПРОЕКТИРОВАНИЕ УРОВНЕЙ ПРИ ПОМОЩИ ИНСТРУМЕНТА TILEMAP_ ______
В рамках проекта пол и платформы созданы из пустых белых прямоугольников. Для окончательного варианта игры требуется более проработанная графика, но вряд ли компьютер сможет обработать изображение размером с целый уровень. Чаще всего эту проблему решают с помощью инструмента tilemap. Он позволяет конструировать изображения по принципу координатной сетки. Вот как это выглядит.
Обратите внимание: карта целиком составлена из маленьких ячеек. Именно это позволяет накрывать изображением весь экран, не прибегая к изображениям слишком больших размеров.
Официальный инструмент tilemap добавлен в последние версии приложения Unity. Можно использовать и внешние библиотеки, например Tiled2Unity, систему, которая импортирует карты, созданные в популярном (и бесплатном) редакторе Tiled.
6.5.1. Наклонные и односторонние платформы
Запустите воспроизведение сцены. В процессе движения персонаж корректно скользит вверх и вниз. Но из-за силы тяжести он начинает скользить вниз и в статичном состоянии. Для решения этой проблемы следует отключить имитацию силы тяжести в случаях, когда персонаж (a) стоит на платформе, (b) находится в состоянии покоя. К счастью, мы уже научили его распознавать поверхности и можем воспользоваться этим в новом фрагменте кода. Нужно добавить всего одну строку.
После редактирования кода движения персонаж стал корректно вести себя на наклонных поверхностях. Теперь добавим так называемую одностороннюю платформу. Персонаж может не только стоять на ней, но и прыгать сквозь нее. При попытке прыжка сквозь обычную платформу персонаж ударится об нее головой.
Персонаж сможет пролететь сквозь платформу при прыжке вверх, но движению вниз она воспрепятствует. Нужно устранить только один недостаток. Его иллюстрирует рис. 6.11. В Unity спрайт платформы может отобразиться поверх персонажа (чтобы было проще это увидеть, присвойте переменной jumpForce значение 7. Можно отредактировать координату Z персонажа, как это было сделано в предыдущей главе, но на этот раз поступим по-другому. У компонента, отвечающего за визуализацию спрайтов, существует порядок сортировки, определяющий, какой спрайт будет демонстрироваться сверху. Выделите объект Player и присвойте параметру Order in Layer в разделе Sprite Renderer значение 1.
Теперь в сцене есть наклонный фрагмент пола и однонаправленная платформа. Но существует еще один необычный вариант, который реализуется немного сложнее уже знакомых вам платформ. Давайте посмотрим, как это делается.
6.5.2. Движущиеся платформы
Третий вариант необычного пола, распространенный в платформенных играх, — это движущиеся платформы. Чтобы добавить в нашу игру такую платформу, потребуется, во-первых, написать новый сценарий, контролирующий ее перемещения, во-вторых, отредактировать сценарий движения персонажа. В новом сценарии платформа будет перемещаться между двумя точками: начальной и конечной. Создайте сценарий C# с именем MovingPlatform и добавьте в него следующий код.
Большая часть кода, который пишется в процессе чтения книги, программирует происходящее в играх. Но сценарии Unity позволяют влиять и на встроенный редактор. Многие не знают, что в Unity можно добавлять дополнительные меню и окна. Более того, с их помощью создаются вспомогательные объекты на вкладке Scene, которые называются габаритными контейнерами (gizmos).
С габаритными контейнерами вы уже сталкивались. Помните зеленые параллелепипеды, обозначающие коллайдеры? Они встроены в Unity, но никто не мешает вам написать сценарий для собственного габаритного контейнера. К примеру, создадим на вкладке Scene линию, соответствующую траектории перемещения платформы. Она показана на рисунке.
Код, рисующий такую линию, очень прост. В верхнюю часть кода, влияющего на интерфейс Unity, нужно добавить строку using UnityEditor; (потому что большинство функций редактора находится именно в этом пространстве имен), но в данном случае этого не требуется. Просто добавьте этот метод в сценарий MovingPlatform:
Про этот код важно понимать следующее. Во-первых, все действие совершается внутри метода OnDrawGizmos(). Это системное имя, как и имена методов Start и Update. Во-вторых, мы добавляем в этот метод две строки кода: первая задает цвет линии, а вторая заставляет Unity нарисовать линию от места, где находится платформа, до целевой точки.
Перетащите этот сценарий на платформу. Запустите воспроизведение сцены, и вы увидите, что теперь платформа двигается из стороны в сторону! Осталось отредактировать сценарий, управляющий перемещениями персонажа, чтобы связать его с движущейся платформой. Внесите следующие изменения.
Теперь запрыгнувший на платформу персонаж будет перемещаться вместе с ней. По сути, все свелось к превращению персонажа в дочерний по отношению к платформе объект. Надеюсь, вы помните, что после формирования иерархической связи дочерний объект начинает перемещаться вслед за родительским. Метод GetComponent() в листинге 6.7 проверяет, является ли распознанная поверхность движущейся платформой. В случае положительного результата проверки она становится предком по отношению к персонажу; в противном случае персонаж отсоединяется от любого предка.
Но возникает одна проблема. Персонаж наследует от платформы и преобразование масштабирования, что влияет на его размер. Ситуацию позволяет исправить обратное преобразование (уменьшение масштаба персонажа, компенсирующее спровоцированное платформой увеличение размера).
Математически компенсация масштабирования выглядит очень просто: игроку присваивается 1, деленная на масштаб платформы. И когда чуть позже масштаб игрока умножается на масштаб платформы, в итоге получается 1. Единственный сложный момент в данном случае состоит в учете знака, определяющего направление движения; возможно, вы помните, что в зависимости от него персонаж поворачивался из стороны в сторону.
Итак, мы добавили в игру движущуюся платформу. Остался один завершающий штрих, и демонстрационная версия будет полностью готова…
Для Хаброжителей скидка 20% по купону — Unity