Сегодняшний урок подойдет для ребят 10–14 лет с минимальным опытом. Благодаря пошаговой инструкции можно разобраться в управлении персонажами на простых примерах и понять, как работать с некоторыми важными инструментами среды Unity.

Платформа «Юнити» предназначена для разработки игр. Она обрела популярность и стала востребованной благодаря ряду известных проектов, скажем, Pokémon GO с аудиторией более 65 млн игроков в месяц.

Отмеченная выше и многие другие игры были реализованы с помощью представленного движка. Он предназначен для профессиональной разработки, поэтому может показаться, что все сложно, но это не так: мы в школе Pixel успешно учим детей и подростков 10–14 лет работе в Unity и написанию кода на C#. Многие ребята отлично справляются даже со сложными индивидуальными проектами.

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

Готовы? Тогда поехали. Впереди 3 интересных и важных шага. 

Шаг № 1: скачиваем необходимое программное обеспечение

Перед тем как начать создавать движение персонажа в Unity 3D и управлять им, нужно скачать движок. В этом помогут обучающие ролики:

Выбор площадки за вами. В видеоуроках рассказано:

  • Где искать установочный файл;

  • Как его скачать и запустить.

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

Шаг № 2: разбираемся в управлении персонажем в Юнити 3Д

В первую очередь давайте запустим движок и перейдем к сцене. Далее нам потребуется:

  1. Создать виртуальную площадку и объект, которым мы будем управлять. Используем инструменты Plane (плоскость) и Sphere (сфера). Потребуется кликнуть на Hierarchy, иконке со знаком + и навести курсор на 3D Object. Справа откроется выпадающее меню, где и будут расположены интересующие нас инструменты. Сразу отметим, что перемещать сферу можно с помощью стрелок, показанных на втором скриншоте. 

  1. Подключить Collider. Если данная функция активна, столкновения будут заставлять сферу двигаться. Найти интересующую настройку можно в правой нижней части.

  1. Добавить физику для нашего сферического объекта – альтернативы виртуальному персонажу. Нужен компонент Rigidbody. Снова обратимся к настройкам в правом нижнем меню и кликнем на Add Component, затем на Physics. В выпадающем списке будет расположен отмеченный компонент.

  1. Приступить к скриптингу. Кликнем правой кнопкой мыши по сцене. Далее наведем курсор на Create и в появившемся перечне кликнем на C# Script. Обязательно нужно назвать скрипт с помощью латиницы. Пусть именем станет PlayerController.

О коде поговорим отдельно. Давайте:

  1. Пропишем 4 переменные float. Они будут определять скорость сферы.

  1. Установим параметры скорости для движения, поворота, горизонтального и вертикального перемещения. Это movement-, turningSpeed, а также vertical и horizontal.

На скриншоте видно, что в горизонталь записана операция умножения скорости поворота на Time.deltaTime. Цель действия – сглаживание движений и задание поворота по оси Y. Так же поступаем с вертикалью для случая с Z, указываем требуемые величины и параметры, как на скриншоте. 

Не забудьте сохранить программу. Поможет сочетание клавиш Ctrl + Shift + S.

Управление персонажем в Юнити 3D
Управление персонажем в Юнити 3D

Наша мини-программа готова. Нужно применить ее в отношении сферы. Зажимаем левую кнопку мыши и перетаскиваем скрипт в специальное меню, как показано на скриншоте ниже.

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

Надеемся, все получилось. Если да, виртуальная сфера начнет передвигаться.

Шаг № 3: создаем передвижение 2D-персонажа в Unity

Теперь предлагаем выполнить проект в 2Д-версии. Будет несколько интереснее, потому что сферу предстоит заменить на более привлекательного персонажа. 

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

Предлагаем начать работать с объектами в виде дракона и земли. Если согласны, приступим. Понадобится:

  1. Переместить персонажа на сцену. Также поступим с землей.

  2. Продублировать части почвы и растянуть на всю сцену. Помогут клавиши Ctrl + D и Move Tool – инструмент, расположенный слева сверху.

  1. Объединить части soil. Это упростит добавление компонентов на платформу. Создадим пустой объект (Hierarchy, +, Create Empty) и добавим в него все части почвы.

Теперь поверхность, по которой передвигается герой, будет единой. Она переместится в папку Game Object.

Далее обращаемся к отмеченной папке, кликаем на Add Component, затем – на Physics 2D и на Box Collider 2D.

Потребуется растянуть 2Д-коллайдер, в чем поможет инструмент Edit Collider. Он находится в Inspector в меню Box Collider 2D.

Осталось выполнить растягивание.

Для управления персонажем в Unity потребуется:

  1. Выбрать дракона (dragon) в Hierarchy.

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

  2. Реализовать виртуальную физику через Physics 2D и Rigidbody 2D, что мы уже делали, когда работали со сферой. 

Осталось написать скрипт для передвижения персонажа в Юнити. Действуем так же, как и ранее:

  1. Переходим в Create и кликаем на C# Script.

  2. Задаем значение maxSpeed на уровне 10 и используем flipRight для отражения по осям.

  3. Берем компонент Rigidbody и прописываем движение по горизонтали в виде его умножения на maxSpeed.

  4. Применяем конструкцию if-else для скриптинга направлений перемещения. Используем move, задаем условие: нажатие на клавиши «влево» и «вправо» приводит к соответствующим действиям дракона. В первом случае скрипт будет возвращать значение -1, во втором – 1.

Код для передвижения персонажа в Unity 2D
Код для передвижения персонажа в Unity 2D

Осталось сохранить простую программу и применить ее по отношению к дракону так же, как мы уже делали со сферой. В завершение можно запустить проект и оценить результат.

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

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

Если не получилось что-то сделать, посмотрите обучающее видео. В нем преподаватель подробно описал процесс.

Чтобы узнать больше о Юнити и программировании на C#, можно:

  • Изучить плейлист с интересными проектами и советами опытных преподавателей;

  • Записаться на курс для детей от 10 до 14 лет.

Материал подготовлен школой Pixel. Вместе с учениками мы каждый день выполняем простые и сложные проекты в Unity, пишем код на C# и используем другие инструменты для разработки и кодинга. 

Комментарии (4)


  1. Petya_krut
    16.10.2024 23:33

    Отличная статья, к сожалению, пока только читаю, до практики еще не дошел)


    1. Sasa111222333
      16.10.2024 23:33

      вам сейчас напишут что вы бот школы или что вы комментите статьи за деньги)))


  1. wichid
    16.10.2024 23:33

    Здравствуйте, почему вы называете поля, переменными?

    Почему у вас табуляция кривая? Зачем разделять, конструкцию if.. else if

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

    Зачем делать такую глупую конструкцию с flipRight? В чем проблема сделать более логичную логику? К примеру turnDirection? С указанием в -1 и 1, -1 это лево и 1 это право.

    Зачем делать vertical и horizontal поля публичными и статичными? Если можно просто сделать локальную переменную внутри метода, т.к. она больше негде не используется

    Отсутствие отдельного метода для поворота, все в Update кучей лежит.

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


    1. Sasa111222333
      16.10.2024 23:33

      так а поле это и есть переменная если не вдаваться в детали. бэйсик тот же вспомните. я не ругаться пришел а к теме коммента просто

      про конструкции в целом понимаю ваше замечание но опять же к основам код все по-разному пишут и почему вы решили что что-то лучше а что-то нет? только с аргументами пожалуйста) учил примерно в 2010 C++ и нам препод даже в уши лил + напрактике показывал что одни и те же вещи можно делать по-разному и всегда будут те кто "верят в свет" и "верят в тьму" это если образно