Шашки на unity как сделать

Добавил пользователь Владимир З.
Обновлено: 10.09.2024

Новая система ввода с устройств в Unity

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

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

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

В этом уроке вы узнаете:

  • Особенности новой системы ввода.
  • Как работает новая система.
  • Как перенести приложения в новую систему ввода из старого диспетчера ввода.

Материалы для урока были созданы в Unity версии 2020.1. Вы можете скачать эту версию Unity на сайте Unity или установить ее с помощью Unity Hub.

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

Приступая к работе

После загрузки проекта вы увидите папку RW в окне проекта:

Список файлов проекта в окне Project редактора Unity

Взгляните на организацию папок:

  • Fonts: шрифты, используемые в сцене.
  • Materials: Материалы для сцены.
  • Models: 3D-сетки для персонажей игрока и игрового окружения.
  • Prefabs: Готовые компоненты, состоящие из скриптов и моделей.
  • Scenes: Игровая сцена.
  • Scripts: Скрипты с игровой логикой.
  • Settings: Файл настроек, в который вы помещаете настройки ввода.
  • Shaders: Шейдеры для специальных эффектов, таких как тень игрока.
  • Textures: Графика, используемая материалами и пользовательским интерфейсом.

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

Игра готова к запуску. Откройте GameScene из папки Scenes и нажмите Play, чтобы попробовать поиграть.

В настоящее время элементы управления Move и Jump используют старый Unity Input Manager. Позже в этом руководстве вы узнаете, как использовать новую систему ввода для замены старой.

Что нового в системе ввода Unity

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

Упрощенная архитектура действий и привязки

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

Следующий код, который поддерживает как геймпады, так и клавиатуру, является примером старого способа работы:

Код использует ветвление if-else для поддержки различных устройств и связанных с ними действий.

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

Событие ввода в новой системе называется action (действием), а отображение между действием и устройством ввода — binding (привязкой).

Сбор информации с помощью инструментов отладки ввода

Система ввода предоставляет новый инструмент под названием Input Debugger. Откройте его, выбрав в меню Window > Analysis > Input Debugger.

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

Состояние системы ввода, включая:

  • Device: информация о подключенных устройствах.
  • Layout: какие элементы управления предоставляют эти устройства.
  • Setting: конфигурация системы ввода.

Он также предоставляет информацию о конкретном устройстве в режиме реального времени. Откройте его, дважды щелкнув на устройство в списке устройств в окне Input Debugger.

Вот демонстрация работы отладчика ввода в действии:

Не стесняйтесь оставлять отладчик ввода открытым, пока вы работаете с руководством.

Поддержка нескольких устройств и платформ

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

  • Клавиатура
  • Мышь
  • Ручка
  • Сенсорный экран
  • Сенсор
  • Джойстик
  • Гэймпад

Примечание. Система ввода также поддерживает устройства, реализующие спецификацию USB HID. Для получения дополнительных сведений ознакомьтесь с документацией по поддерживаемым устройствам Unity.

Понимание новой системы ввода

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

  • Input Action Assets: файл настроек, содержащий свойства действий и связанных с ними привязок.
  • Actions: действия определяют логическое значение ввода. Вы можете найти эту информацию в активах входных действий.
  • Bindings: привязки описывают связь между действием и элементами управления устройства ввода. Вы также найдете эту информацию в объектах Input Action Assets.
  • PlayerInput: PlayerInput — это скрипт, который управляет событиями действий и связывает их с соответствующей логикой кода.

Иногда легче понять новый рабочий процесс, если вы можете его визуализировать, поэтому взгляните на изображение ниже:

Архитектура новой системы ввода в Unity

Разбейте это на простейшие шаги:

  • Сначала Unity Engine собирает информацию с подключенных устройств и отправляет соответствующие события, такие как нажатие кнопки, в систему ввода.
  • Затем система ввода преобразует эти события в действия на основе информации о действии и привязке, хранящейся в активах действия ввода.
  • Затем он передает действия скрипту PlayerInput, который вызывает соответствующие методы.

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

Установка новой системы ввода

Первое, что вам нужно сделать, это установить новый пакет системы ввода. Стандартная установка Unity не включает его.

Откройте Window > Package Manager в строке меню. Убедитесь, что вы выбрали Unity Registry в раскрывающемся списке пакетов, если вы еще этого не сделали.

Окно Package Manager в редакторе Unity

Найдите Input System в списке. Выберите и нажмите Install.

Установка системы ввода в окне редактора Unity

Создание ассета действия Input

После установки пакета Input System вы создадите ассет действия Input, чтобы сохранить настройки для действий и привязок.

Откройте окно Project и выберите Settings из RW. Щелкните правой кнопкой мыши, выберите Create > Input Actions и переименуйте его в MyControl.

Создание нового ассета Input в Unity

Настройка редактора действий

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

Окно Action Editor в Unity

Поскольку это новое окно, взгляните на разделы:

  1. Action Maps: группы действий, которые происходят в игре. Вы можете группировать действия для разных целей, таких как игрок, игровой процесс или пользовательский интерфейс.
  2. Actions: список действий и привязок, связанных с выбранной картой действий. На этой панели вы можете создавать, изменять или удалять действия и привязки.
  3. Properties: отредактируйте свойства действия или привязки на этой панели, например тип действия и элементы управления, связанные с привязкой.
  4. Save Assets: это очень важная функция: вы должны нажать Save Assets после внесения любых изменений в Input Action Asset. Если вы забудете сохранить, настройка не сработает. Таким образом, вы не увидите ожидаемого результата и можете подумать, что в коде есть ошибка. Вы можете включить автосохранение, чтобы избежать проблемы, но это довольно медленно.

Теперь вы готовы создать свое первое действие — действие Jump.

Создание действия Jump

Сначала откройте редактор действий и нажмите на значок + в ActionMap, чтобы создать новую карту действий. Переименуйте со значения по умолчанию New Action Map в Player.

Затем на панели Action дважды нажмите на New Action и переименуйте в понятное имя: Jump.

И наконец, вам нужно добавить привязку к действию Jump. Вы свяжете кнопку Spacebar и левую кнопку мыши с этим действием, выполнив следующие действия:

  1. Выберите действие Jump, нажмите на значок + и выберите Add Binding.
  2. Нажмите на новый элемент привязки, .
  3. Нажмите на поле Path на панели Binding properties.
  4. Введите Spacebar Keyboard и выберите Space Шашки на unity как сделать, чтобы создать привязку для клавиши Spacebar.
  5. Повторите шаги 1–3, чтобы создать еще одну привязку для левой кнопки мыши.
  6. Введите Left Button в поле Path и выберите Left Button [Mouse], чтобы создать привязку.

Поздравляем, теперь вы связали действие Jump с клавишей Spacebar на клавиатуре и левой кнопкой мыши.

Теперь соедините эти действия с кодом!

Реализация логики прыжка

Прежде всего, вам нужно удалить из проекта старую логику обработки ввода данных. Откройте Player.cs и перейдите к методу Update () .

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

Теперь, когда действие Jump и его привязки элементов управления готовы, следующее, что нужно сделать, — это связать действие с кодом.

Связывание действия Jump с кодом

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

Сохраните скрипт и вернитесь в редактор. Выберите объект Player в иерархии и добавьте компонент PlayerInput из инспектора.

Затем перетащите MyControl в поле Actions компонента PlayerInput. Убедитесь, что в качестве Default Map выбрано Player.

И наконец, откройте Player.cs и добавьте новый метод OnJump () со следующим кодом:

Вы связали этот метод с действием Jump, назвав его этим шаблоном: public void On [Action Name Goes Here] () .

Например, действие Jump вызывает OnJump () , а действие Attack вызывает OnAttack () .

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

Создание действия перемещения

Вы узнали, как использовать систему ввода для создания действия прыжка. Далее идет действие движения Move! Это действие похоже на Jump, но имеет несколько ключевых отличий.

Например, действие Jump — это простое инициирующее событие, а действие Move — это событие, которое несет в себе значения: направление движения, которое определяется пользовательским вводом.

Опять же, вам нужно создать действие и его привязку. Начните с перехода в редактор действий (дважды нажмите на MyControl, если окно не отображается) и нажмите на значок + на панели действий, чтобы создать новое действие. Переименуйте его в Move.

Затем откройте панель свойств действия, измените Action Type на Value и Control Type на Vector 2.

И наконец, удалите , щелкнув правой кнопкой мыши и выбрав Delete.

Теперь вам нужно создать привязки для действия Move.

Сначала нажмите значок + в заголовке действия Move. Затем выберите Add 2D Vector Composite, чтобы создать четыре элемента привязки, соответствующие направлениям вверх, вниз, влево и вправо.

  • Up: Up Arrow Шашки на unity как сделать
  • Down: Down Arrow Шашки на unity как сделать
  • Left: Left Arrow Шашки на unity как сделать
  • Right: Right Arrow Шашки на unity как сделать

Не забудьте сохранить ассет в редакторе действий!

Реализация логики движения

Перед добавлением новой логики движения вам необходимо удалить реализацию старого ввода Unity.

Откройте Player.cs и перейдите в метод FixedUpdate () :

Обратите внимание, что FixedUpdate () вызывается в каждом кадре с фиксированной частотой кадров.

А теперь рассмотрим по порядку:

  1. Input.GetAxisRaw возвращает значение Axis . Input.GetAxisRaw ("Horizontal") дает значение оси X, а Input.GetAxisRaw ("Vertical") дает значение оси Y.
  2. Эти два значения определяют вектор движения moveVec , который вы используете для управления направлением движения игрока.
  3. Логика поведения персонажа игрока на поверхности.
  4. Логика поведения персонажа игрока во время прыжка.

Теперь удалите весь код перед оператором if , чтобы убрать старую логику ввода. Добавьте следующий код над определением класса:

Это позволяет вам получить доступ к значениям из новой системы ввода.

Затем добавьте метод OnMove () , который вызывает действие Move.

Когда игрок нажимает клавиши Up, Down, Left и Right, он передает этому методу действие Move вместе со значениями. Вот как нажатие клавиш влияет на значения:

InputValue — это новый тип, о котором вы, возможно, не знаете. В этом классе есть метод Get \ () , который можно использовать для доступа к его значениям. В этом случае вы хотите, чтобы 2D-векторный композит, который вы установили в привязке, вычислял вектор движения.

Нажмите Play, чтобы проверить логику.

Обработка действий

Новая система ввода предоставляет четыре способа обработки событий действия.

В этом уроке вы использовали подход SendMessages. Вы можете изменить этот параметр в поле Behavior компонента PlayerInput.

Изменение поведения для обработки ввода в Unity

SendMessage и BroadcastMessage — самые простые способы обработки действий. Когда вы используете эти две опции, система вызывает метод с именем, совпадающим с именем действия.

Например, в этом уроке действие Jump вызывает OnJump () , а действие Move вызывает OnMove () .

BroadcastMessage похож на SendMessage , за исключением того, что он может вызывать методы любого дочернего игрового объекта. Эти два параметра просты в использовании, поскольку для их использования не нужно ничего настраивать.

Использование Invoke Unity Events

При использовании Invoke Unity Events (вызов событий Unity) вы настраиваете действие так же, как вы настраиваете нажатие кнопки в Unity UI.

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

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

Вот пример того, как это выглядит:

Вот что делает этот код:

  1. Получает компонент PlayerInput и регистрирует метод в onActionTriggered .
  2. Управляет тем, какой метод вызывать для различных действий.

Использование цикла обновления новой системы ввода

В старом Unity Input Manager вы проверяли ввод в каждом кадре с помощью метода Update () . В новой системе ввода вы можете задаться вопросом, когда отправляются действия и отправляются ли они перед каждым методом Update () .

В новой системе ввода используется другой цикл обновления, который не зависит от цикла MonoBehaviour . Вы можете узнать больше об этом в документации Unity Execution Order.

Система предлагает три режима обновления для управления циклом обновления. Вы можете настроить их в настройках проекта Project Settings > Input System Package > Update Mode.

Разные методы обновления системы ввода в Unity

Взгляните на каждый из этих узлов:

  • Dynamic Update: обрабатывает события с нерегулярными интервалами, определяемыми текущей частотой кадров. Это значение по умолчанию.
  • Fixed Update: обрабатывает события с интервалами фиксированной длины. Time.fixedDeltaTime определяет длину интервала.
  • Manually: события не обрабатываются автоматически; вы обрабатываете их, когда вызываете InputSystem.Update () . Если вам нужна проверка, аналогичная старой системе, вы можете вызвать InputSystem.Update () в Update () .

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

Куда двигаться дальше?

В этом уроке по Unity Input вы узнали:

  • Базовая схема новой системы ввода.
  • Как использовать действия и привязки.
  • Как эффективно обрабатывать различные типы ввода игроков.

Чтобы проверить свои навыки, попробуйте добавить в игру действие Pause.

Чтобы узнать больше о новой системе ввода, вы можете прочитать руководство по системе ввода Unity.


Эксперт в медицинских тренажерах VR на Unity, физических симуляциях и сетевых играх.

Что такое Unity

Unity — это и среда разработки, и игровой движок, с помощью которого создаются проекты для разных платформ: ПК, мобильных устройств, игровых консолей и интернет-платформ, — поэтому он называется кроссплатформенным. В Unity есть инструменты для создания объектов, их перемещения, работы с графикой, текстурами и звуком, поэтому сделать полноценную игру с его помощью можно даже в одиночку.

Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — Genshin Impact, успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.

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

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

Посмотрите также: Как установить Unity

Как создать простую игру

При создании собственного проекта важно помнить, что разработка кода — это примерно 20% игры; гораздо большее значение в ней имеют другие аспекты:

Разработчик игр на Unity

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

Русского языка в настройках нет, так что придется совершенствовать технический английский. Всего Unity занимает 11,3 Гб,поэтому перед установкой лучше проверить свободное место на диске и почистить его при необходимости.

Следующий шаг — создание Unity ID. Можно регистрироваться с помощью почты или использовать предложенные аккаунты, например Google, Facebook или Apple. Важно поставить первые две галочки: согласие с условиями использования Unity и признание политики конфиденциальности. Третья галочка — это согласие на маркетинговые рассылки, ее ставить не обязательно.

После регистрации Unity предложит создать тестовый проект Microgame. На выбор предлагается пять шаблонов:

  • LEGO Microgame;
  • шутер от первого лица;
  • картинг;
  • платформер;
  • пустой 3D-шаблон.

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

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

После обучения можно перейти к созданию своей первой игры на Unity с помощью кнопки NEW в меню проектов.

Новому проекту присваивается имя, выбираются место хранения на диске и темплейт — то есть шаблон для разработки, внешний вид и функционал которого зависит от количества измерений в игре. Проще начинать с 2D-проектов, так как для этого формата создано больше готовых ассетов. Конечно, можно сразу начать делать 3D-игры, но в этом случае многие элементы и анимации придется самостоятельно создавать с нуля или выделять бюджет на то, чтобы делегировать эту часть работы другим специалистам.

Настройка интерфейса

В стандартном интерфейсе проекта шесть элементов рабочей области:

  1. Верхняя панель инструментов— в ней находятся стандартные вкладки File, Edit, Help, как во многих других интерфейсах, а также вкладки Assets, GameObject, Components и Window.
  2. Scene — окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).
  3. Games — это окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.
  4. Hierarchy — окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.
  5. Project — это система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).
  6. Inspector — окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.


Добавление объекта

Объекты на экран Scene можно добавить из Asset Store. Для этого на панели инструментов нужно кликнуть на вкладку Window –> General –> Asset Store.

В строке поиска можно по названиям найти нужные компоненты, например, сет Free Platform Game Assets.

Как и другие ассеты, он загружается с помощью кнопки Import.

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

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

Шаг 2. Перенести в область Scene

Работа со скриптами

За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.

Базовые элементы скриптов — это:

  • using — элемент в коде, который подключает библиотеки;
  • public class — в этой строке обычно прописан класс MonoBehaviour, он содержит набор функций, необходимых для работы скрипта;
  • void — те самые функции, с их помощью прописываются действия, происходящие в игре.

Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).

И можно заметить, что в консоли это слово выводится один раз.

Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.

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

Настройка триггеров

Для понимания сути триггеров важно усвоить, что такое коллайдер (Collider). Это компонент, который присваивается объекту в пространстве игры, задает форму и делает его твердым, недоступным для прохождения сквозь него. Например, если мы разместим монетку в 2D-пространстве и захотим сделать так, чтобы она упала на платформу, то без использования компонента Collider ничего не получится — монетка пролетит сквозь платформу.

Поэтому обоим объектам необходимо присвоить компонент Box Collider 2D — это тонкая зеленая линия, которая обводит элементы по контуру, и за счет этой рамки они становятся твердыми, то есть один не может пройти сквозь другой.

Так объекты обязательно соприкоснутся и монета встанет на платформу.

Триггер (Trigger) — это пространство на карте, при попадании объекта в которое происходит действие; он тоже обводит объект или область в пространстве по краям. По сути, это тот же коллайдер, только триггер позволяет объектам проходить внутрь этой области. Представьте, что на ту же самую платформу вместе с коллайдером наброшен триггер, и при попадании персонажа внутрь триггерной области активируется телепорт — персонажа перебрасывает в другую точку карты.

Чтобы создать триггер, нужно накинуть тот же самый компонент коллайдера, но поставить галочку Is Trigger.

Триггеры распознают три варианта взаимодействия области на карте и объекта:

  • OnTriggerEnter — объект зашел в зону;
  • OnTriggerStay — объект находится в зоне;
  • OnTriggerExit — объект покинул зону.

Что дальше?

Разработчик игр на Unity

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

Unity — это среда, которая позволит детям почувствовать себя настоящими разработчиками игр! На движке Unity 3D ребята могут создавать анимацию, запрограммировать игровую сцену и полноценные игры. А также познакомиться с языком программирования "Си шарп", на котором в Unity пишутся скрипты.

Школа программирования для детей "Пиксель" подготовила бесплатные уроки Unity 3D, которые познакомят детей с программой и научат создавать первые игры. Поддержите нас, ставьте палец вверх, если наш бесплатный курс по Юнити окажется полезным для ваших детей.

Как скачать Unity 3D на ПК

Для начала скачаем и установим программу на компьютер.

Урок 1. Как сделать анимации в Unity 3D

Начинаем уроки по Юнити. Первый шаг — анимирование персонажа. Мы добавим нашего дракона на сцену, изменим его размеры, научим его двигаться и бегать с заданной скоростью. Напишем наш первый скрипт.

Урок 2. Как сделать телепорт в Unity 3D

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

Урок 3. Как сделать спавн объектов в Unity 3D

Мы изучим 2 способа создания спавна объектов: на канвасе (canvas) и в пределах камеры. А еще узнаем, как создавать префабы.

Урок 4. Триггеры в Unity 3D | Столкновение персонажей

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

Урок 5. Как создать таймер в Unity 3D

Таймер нужен для почти любой игры, мы научимся создавать его с помощью корутины (Coroutine) и команды InvokeRepeating.

Урок 6. Перемещение объекта мышью в Unity 3D

Функция Mouse Drag или, по-другому, метод перетаскивания нужен для того, чтобы перетаскивать объекты в игре. Например, как мы показываем в видео, чтобы перемещать еду на персонажа и кормить его.

Урок 7. Как сделать полосу здоровья персонажа в Unity 3D

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

Урок 8. Как сохранить игру в Unity 3D

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

Урок 9. Создаем игру "Раннер" в Unity за 30 минут

Урок 10. Как экспортировать игру из Unity на ПК или Android (как настроить для Play Market)

В этом видео расскажем, как собрать игру под ПК или под Android: в каком порядке собрать сцены, какие им дать номера, а еще какие настройки нужны, чтобы загрузить игру Play Market.

Урок 11. Как загрузить игру в Play Market

Мы собираем игру и заполняем все настройки для Play Market. Теперь другие пользователи смогут сыграть в вашу игру, а вы будете на этом зарабатывать.

Урок 12. Как сделать прыжок в Unity 3D

В этом уроке мы разберем, как сделать прыжок персонажа в 2D- и в 3D-проекте. Для этого мы создадим две сцены, напишем скрипты на языке Си Шарп.

Урок 13. Как управлять персонажем в Unity 3D

Давайте научим нашего персонажа двигаться. Для этого мы зададим переменные типа float, они будут отвечать за скорость, поворот и перемещение по горизонтали и по вертикали. И, конечно, напишем скрипты для 2D- и 3D-версии игры.

Урок 14. LineRenderer в Unity 2D

LineRenderer позволяет упростить рисование линий. В этом видео мы напишем два скрипта: Line Point позволит проводить прямую линию между любыми двумя точками, а с помощью Draw Line мы сможем рисовать неотрывную линию.

Урок 15. Как сделать автосимулятор в Unity 3D | Как сделать гонки в Unity 3D

Пришло время сделать гоночную игру! Давайте построим небольшую трассу, настроим модель автомобиля и напишем код для коробки передач: наш автомобиль будет двигаться в разные стороны и менять скорость.

Наши плейлисты регулярно пополняются, подписывайтесь на наш YouTube-канал , чтобы следить за выходом новых видео и открывать для себя мир IT-технологий!

Если же вам нужен наставник, загляните в Школу программирования для детей “Пиксель”: запишитесь на полный курс по разработке игр на движке Unity 3D .

Продолжаем делать наш Unity for dummies платформер.

Полные версии кода будут находиться в конце поста.

Если вы не в курсе, как работают хуки жизненного цикла в Unity, вы можете ознакомиться с данной статьёй.

Затем выбираем наш объект Player слева, в меню иерархии, и закрепляем инспектор (меню справа), нажав на замок в верхнем правом углу.

Пока закрываем все ненужные компоненты (Box Collider 2D, etc), нажимая на стрелочку у каждого из них.

Теперь перетаскиваем наш скрипт в инспектор, и он прикрепляется к объекту Player (если вы не выполнили предыдщуий пункт с закрепением меню, то вы этого сделать не сможете).

Если зайти в Edit => Project Settings => Input Manager, то мы можём увидеть настройки управления. Например, прыжок (Jump) назначен на пробел, в то время, как движение по горизонтали назначено на a, d, <-,->.

Запомним это для того, чтобы затем использовать в коде (названия инпутов Jump, Horizontal).

Пора покодить. Два раза нажимаем на наш скрипт PlayerBehaviour, и Unity отдаст его в руки Visual Studio.

Честно, данную IDE я не люблю. Потому я открываю его в VScode (а вы хоть в VIMе пишите - это ваш выбор).

Я не буду часто использовать try/catch в этом коде, но вам очень советую - сильно экономит время.

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

Мне не нравится, что персонажа переворачивает. Исправим.

Заходим в инспектор, открываем Rigidbody2D и ставим галочку на Freeze Rotation Z.

Жить можно, но есть проблема - камера не двигается за персонажем.

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

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

2. Задать движение камеры за персонажем програмно.

Создаём скрипт CameraBehaviour, и привязываем его к объекту Main Camera (добавляем через инспектор).

Открываем наш новый скрипт, и начинаем кодить (да, мне на работе не хватает, продолжаю и после).

Фиксируем объект камеры на замок в инспекторе, и перетаскиваем наш объект Player в GameObject.

Теперь камера двигается за игроком.

Однако камера постоянно вылезает за пределы уровня, показывая синий фон.

Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт.

Если у камеры пропала рамка (у меня, внезапно, случилась такая оказия - потратил аж 2 минуты на решение проблемы), надо зайти в Gizmos и отметить чекбокс на камере.

Добавляем в наш скрипт CameraBehaviour следующий код:

[Header("Camera position restrictions")] public float minY; public float maxY; public float minX; public float maxX;

Двигаем камеру, и снимаем наши измерения ее положений.

На скрине ниже камера стоит в левом нижнем углу сцены.

Исходя из поля Position, я выбираю минимум по Х = -12, по Y = -0.5 (числа округлены их -12.09 и -0.84) соответсвенно.

Проставляем снятые позиции для камеры (мои и ваши позиции будут отличаться).

Теперь обновим метод UpdateCameraPosition в скрипте CameraBehaviour

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

Отлично, камера перестала "гулять". Работаем дальше.

Всё бы хорошо, но наш персонаж может летать - надо всего лишь жать кнопку прыжка. Добавим проверку на нахождение на земле.

Выбираем наш Foreground, и создаём новый слой 'Ground' в инспекторе.

Снова тыкаем на Foreground, и выбираем в поле Layer наш только что созданный слой.

Переходим к коду.

Добавим в PlayerBehaviour такую строчку.

Теперь в объекте Player мы можем выбрать наш свежесозданный слой.

Обновляем наш PlayerBehaviour. Добавим коллайдер (rigidBody мы создавали ранее).

Теперь мы можем обновить обработку перемещения персонажа в методе updatePlayerPosition

Тут я вспомнил, что забыл глянуть, как "наделся" Box Collider на персонажа. Кажется, все ок - линии идут ровно по персонажу (жёлтая рамка). Если что, всегда можно ткнуть на Edit Collider и подтянуть его.

Летать мы разучились, а по платформе больше не скользим. Победа!

  • Из-за слоя Ground персонаж может прыгать от стенок. Не знаю, как это можно решить.
  • Является ли ограничение движения камеры, которое я написал, отимальным.
  • Иногда персонаж застревает на месте. Такое ощущение, что коллайдер видит какой то микропиксель, и персонаж застревает на нём.

Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт

Привет.
Я, конечно, дохуя вовремя, когда у тебя уже пять статей и рефакторинг, но вот щас иду за тобой пока вот на этом месте.
Короче, в ассет-сторе есть проект 2D Game Kit от разрабов движка. Там движение камеры сделано буквально следующим образом, если помню (давно открывал). Уровень завёрнут в коллайдер, ещё один коллайдер на камере. Соответственно, когда она о него стукается, то расслабляется и не двигается. И ещё там угарный камера-лаг стоит, чтоб камера не жёстко следовала за персонажем, а как бы за верёвочку.

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

Надо разобраться куда исчезает. Самое простое, поставить на паузу, перейти из окна Game в Scene, и просто посмотреть. А потом уже делать выводы.

Читайте также: