код движения персонажа в unity 2d

Как заставить персонажа двигаться в Unity 2d

В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

На нашей сцене уже имеется заготовка персонажа с анимацией, добавим к ней компоненты Box Collider 2d и Rigidbody 2d и настроим компонент так как на скриншоте

код движения персонажа в unity 2d. rogibody2d. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-rogibody2d. картинка код движения персонажа в unity 2d. картинка rogibody2d. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Далее создадим скрипт к примеру TransformPlayer с таким кодом:

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

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

Добавим на сцену спрайты земли и продублируем 4 раза, на каждый компонент вешаем те же компоненты Box Collider 2d и Rigidbody 2d, создадим еще один скрипт TransformGround

код движения персонажа в unity 2d. ground. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-ground. картинка код движения персонажа в unity 2d. картинка ground. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь подробнее… Создадим на камере два пустых объекта, один разместим слева и добавим Box Collider 2d и Rigidbody 2d, так же присвоим ему тэг, который указали в скрипте barer, а другой справа. Примерно так…

код движения персонажа в unity 2d. gameobject. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-gameobject. картинка код движения персонажа в unity 2d. картинка gameobject. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

На объектах «земли» укажем этот объект который справа.

Теперь можно поверить запустив игру

код движения персонажа в unity 2d. transformrigibodi. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-transformrigibodi. картинка код движения персонажа в unity 2d. картинка transformrigibodi. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

Источник

Основы создания 2D персонажа в Unity 3D 4.3. Часть 2: бегущий персонаж

Всем привет. Продолжаем дело, начатое в первой части. Сейчас у нас есть платформа и стоящий на ней персонаж с анимацией покоя. Настало время научить нашего персонажа бегать вправо-влево по платформе.

Загрузим сцену из первой части. Напомню, что в прошлый раз мы импортировали несколько спрайтов в папку AssetsSprites. На всякий случай, внизу поста еще раз приведу ссылку на спрайты. Среди них должен быть спрайт под названием Run. Мы будем использовать его для создания анимации бега. Для этого нам надо проделать те же действия по превращению одиночного спрайта в коллекцию, как и при создании анимации покоя. Вкратце напомню: выделяем спрайт, в окне Inspector устанавливаем свойство Sprite Mode как Multiple, нажимаем ниже Sprite Editor, нарезаем изображение в режиме Grid или Automatic.

код движения персонажа в unity 2d. image loader. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-image loader. картинка код движения персонажа в unity 2d. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь в окне Hierarchy выбираем Character и переходим в окно Animation. Нажимаем на поле с анимацией Idle и выбираем Create New Clip, чтобы создать анимацию бега. Сохраним файл анимации в папке AssetsAnimations под именем Run.

код движения персонажа в unity 2d. image loader. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-image loader. картинка код движения персонажа в unity 2d. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Новая созданная анимация Run стала текущей в окне Animation. Разворачиваем спрайт Run в окне Project, выделяем все фалы Run_0… Run_9 и перетаскиваем в окно Animation. Установим пока значение Sample равное 24.

код движения персонажа в unity 2d. image loader. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-image loader. картинка код движения персонажа в unity 2d. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Все это мы уже делали в первой части, а теперь будет нечто новое. Перейдем в окно Animator. Сейчас там отображены три анимации: Any State, Idle и Run. Нам предстоит задать условия перехода из анимации Idle в анимацию Run, то есть из состояния покоя в состояние бега. В нижнем левом углу есть поле Parameters. Нажимаем на плюсик, выбираем Float и называем новый параметр как Speed. Тем самым мы создали параметр типа число с плавающей запятой, обозначающий скорость перемещения персонажа. Именно в зависимости от значения этого параметра будет происходить переключение из анимации покоя в анимацию бега. Теперь нажимаем правой кнопкой мыши на анимацию Idle, выбираем Make Transition и нажимаем левой кнопкой мыши на анимацию Run. Между анимациями появится линия со стрелкой. Передвиньте мышкой прямоугольники анимации, если плохо видно. Кликнем по линии со стрелкой. В окне Inspector отобразятся свойства перехода между анимациями. Обратим внимание на низ окна, в раздел Conditions. Кликнем на параметр Exit Time и поменяем его на Speed. Второе поле Greater оставим без изменений, а в третьем введем значение 0.01. Мы создали условие перехода из анимации покоя в анимацию бега — оно происходит, когда значение параметра скорости становится немногим больше нуля.

код движения персонажа в unity 2d. image loader. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-image loader. картинка код движения персонажа в unity 2d. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь нужно сделать обратный переход — из Run в Idle. Делаем все с точностью наоборот: Make Transition от Run к Idle, выделяем переход, в Conditions устанавливаем SpeedLess0.01.

код движения персонажа в unity 2d. image loader. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-image loader. картинка код движения персонажа в unity 2d. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь у нас есть две анимации и условия перехода между ними. Но пока ничего работать не будет, потому что все что мы сделали нужно «оживить» при помощи скрипта. Давайте перейдем в окно Project и создадим в папке Assets подпапку Scripts. Добавим в нее новый C# Script, назовем его CharacterControllerScript и откроем на редактирование.

код движения персонажа в unity 2d. image loader. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-image loader. картинка код движения персонажа в unity 2d. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

Итак, мы завели несколько переменных: для задания максимальной скорости перемещения, для определения направления (вправо/влево) и для работы с компонентом Animator. Почти все действия происходят в методе FixedUpdate. В нем мы получаем значение оси Х, которое меняется при нажатии на клавиатуре клавиш влево-вправо или A-D (если не меняли соответствующие настройки проекта!). Затем устанавливаем это значение параметру Speed компонента Animator. Обратите внимание, что мы берем модуль этого значения при помощи метода Mathf.Abs, так как при создании условий перехода между анимациями покоя и бега мы сравниваем значение параметра с положительным числом 0.01. Нам здесь не важно, в какую сторону бежит персонаж. Важно лишь величина значения. Далее задаем скорость перемещения по оси Х в соответствии со значением максимальной скорости. И, наконец, проверяем, в какую сторону бежит персонаж, и в какую сторону он в этот момент повернут. Если он бежит вправо, а повернут влево — разворачиваем его вправо путем инвертирования его размера по оси Х. И наоборот. Этим нехитрым способом мы избавились от необходимости делать две анимации вместо одной: для бега вправо и для бега влево.

Сохраняем скрипт. В Unity перетаскиваем его на нашего Character в окне Hierarchy. Запускаем игру, нажимаем влево-вправо или A-D.

код движения персонажа в unity 2d. image loader. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-image loader. картинка код движения персонажа в unity 2d. картинка image loader. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Капитан Коготь теперь умеет бегать! Скорость анимации получилась быстроватой. Ее можно снизить путем уменьшения значения Sample в окне Animation для анимации Run (значение 12 будет нормально). Если одновременно с игрой у вас видно окно Animator, то вы увидите, что во время покоя работает анимация Idle (бегает синий прогрессбар), а во время бега происходит переход на анимацию Run, и, соответственно, работает она.

На этом пока все. Нам осталось разобраться с прыжками… и узнать при этом еще несколько новых вещей!
Ссылка на спрайты.

Источник

Правильная реализация передвижения персонажа

Почему один обьект проходит сквозь другой хотя у меня есть коллайдеры на обоих обьектах?

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

Как реализовать передвижение персонажа в Unity3d правильно?

Почему так часто используется передвижение через transform.position и почему это неправильно?

Почему мой персонаж движется с разной скоростью если проседает FPS?

Почему двигать персонажа через смену transform.position неправильно?

Как сделать прыжок от пола, но так что бы персонаж не мог бесконечно взлетать

Все эти вопросы, фактически, являются одним единым вопросом, который слишком уж часто встречается у начинающих.

Заодно создал тэг unity3d-faq

код движения персонажа в unity 2d. dRPDg. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-dRPDg. картинка код движения персонажа в unity 2d. картинка dRPDg. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

1 ответ 1

Перед прочтением важно знать

Хоть я здесь и разбираю в т.ч. нефизическое движение, я настоятельно рекомендую использовать ФИЗИЧЕСКОЕ движение. И переходить на нефизическое только в исключительных ситуациях.

Я буду использовать здесь 2 термина: «телепортация» и «плавное движение». В моем понимании:

Есть люди у которых мнение отличается.

Учтите, что все что написано ниже упирается в верхние значения терминов, а не эти.

Двигать обьекты в игровых движках можно следующими способами:

используя физический движок (движение обусловленное физической моделью игрового движка)

Движение реализуемое через CharacterController (здесь пока что не рассматривается т.к. новички в его сторону вообще не смотрят, может, позже распишу)

Новички очень часто использую телепортацию на каждом кадре, что есть критически неправильным подходом. Потом на SO появляются кучи клонов вопросов вроде «почему персонажа дергает возле стены?» или «почему он проходит сквозь стену?» или «почему пуля не всегда наносит урон?» и подобные.

Нужно запомнить всего одно правило: Двигать/поворачивать через присвоение transform.position / transform.rotation нельзя. Это порождает проблемы. В любом случае это вам вылезет боком.

Пример правильной реализации движения:

( на примере обьекта-шара )

в отличии от пестрящих дичью форумов, в т.ч. сервисе вопросов/ответов от юнити. Там в таких темах слишком часто пишут ответы те люди, которые понятия не имеют о правильном подходе.

код движения персонажа в unity 2d. . код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-. картинка код движения персонажа в unity 2d. картинка . В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Связанные с темой понятия:

Если обьект не обладает физическими свойствами (не имеет RigitBody) эти параметры и методы можно использовать для НЕфизического передвижения.

Например поворот камеры.

Или крутящийся куб на небосводе.

Мы не получим дергающуюся картинку при проседании кадров если сделаем НЕФИЗИЧЕСКОЕ движение правильно:

мы присваиваем в новую позицию:

Про физические свойства движения.

мы разово задаем вектор скачка. Только 1 долю секунды. Но он будет изменятся во времени автоматически равномерно уменьшаясь под силой тяжения. Пока не станет нулевым (верхняя точка прыжка), а потом не пойдет в минус по Y (падение), а потом не упадет на землю и не отскочит от нее (снова плюс по Y ) и так до полной остановки физической скорости обьекта на земле.

Если девайс с игрой сильно загружен, вызов методов Update() / FixedUpdate() тоже может просесть в скорости. И если в физике это учтено и без нас, то сейчас мы делаем НЕ физическое движение и именно по-этому это нужно учитывать добавлением даного множителя.

Но и без использования даного множителя у нас не появится проблем с провалами сквозь стены. Это просто фикс скорости.

Пример простой но хорошей НЕФИЗИЧЕСКОЙ реализации кода движения на примере персонажа.

Если в прошлом примере мы двигали шар, то было допустимо его толкать используя физ.модель. То есть мы использовали AddForce() для этих целей.

код движения персонажа в unity 2d. CENlJ. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-CENlJ. картинка код движения персонажа в unity 2d. картинка CENlJ. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Давайте актуализируем этот код под даного персонажа. Мы заменим физический толчек обьекта на не-физическое, но ПЛАВНОЕ перемещение обьекта в пространстве:

С этим кодом мы получим такой результат:

код движения персонажа в unity 2d. X44zR. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-X44zR. картинка код движения персонажа в unity 2d. картинка X44zR. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

Так же можно добавить анимацию бега на нашего персонажа (ну если бы это был не куб).

Но как же реализация на физике?

Да, можно подобное реализовать и на физике.

Наша прошлая версия скрипта имела несколько недостатков. А именно:

Давайте поместим на наш куб CapsuleCollider (минимальное торможение из-за силы трения) и заблочим в rigitBody rotateX и rotateZ (что б наш персонаж не падал на бок).

А потом нацепим на него вот этот скрипт:

код движения персонажа в unity 2d. dWib3. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-dWib3. картинка код движения персонажа в unity 2d. картинка dWib3. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Вы видите эту плавность, как будто человек бежит, останавливается, бежит в другую сторону? Красота!

А теперь вернитесь к прошлой гифке и присмотритесь. Движение совсем не такое 🙂 Там как буд-то рукой двигают шахматную фигуру по доске.

Ну и описанные выше баги поведения были пофикшены с такой реализацией.

Можно добавить еще физический материал нашему персонажу и откоректировать его поведение.

Вообще улучшать реализацию можно до бесконечности. Но, думаю, основные проблемы СПОСОБОВ ПЕРЕДВИЖЕНИЯ с которыми вы столкнетесь, я затронул 🙂

Оптимально использовать именно передвижение на базе физики.

Пытайтесь использовать исключительно физическое передвижение.

Реализация нестандартной физики движений.

Одним из моих любимейших примеров нестандартной физики движения является игра Ori and the Blind Forest

Такое перемещение/такие прыжки невозможно сделать на основе стандартной физики. Вероятнее всего, это делалось через нефизическое перемещение + костыли для получения нужных эфектов.

Сначала разрабатываются концепты движения. Они делаются в любом видеоредакторе с примитивными фигурами. Вот пример (если станет недоступным искать можно по Ori and the blind forest Enemy Concepts ) :

Обратите внимание на то, то здесь прорисовано не только перемещение обьекта, но и его вытягивания/сжатия. Изменения формы во время любого взаимодействия с внешним миром. В т.ч. выстрелы так же влияют на форму. А так же что указываются радиусы опознавания главного героя каждым отдельным врагом.

Костыли для каждого персонажа/врага свои собственные. Это делается что бы каждый из них обладал своей уникальной физикой. Сделать это на общей физике навряд ли возможно.

Движение реализовано «правильно» но предмет все равно пролетает сквозь стену

ДАЖЕ если вы реализовали физическое передвижение вашего персонажа, все равно может случится такое, что просчет CollisionDetect может проходить с ошибками. Такое бывает.

Для таких случаев есть настройки отвечающие за обработку CollisionDetect в настройках самого RigitBody.

код движения персонажа в unity 2d. GkfsP. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-GkfsP. картинка код движения персонажа в unity 2d. картинка GkfsP. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Желательно такого не делать т.к. это негативно сказывается на производительности. Чем на большем количестве обьектов вы меняете эти настройки, тем более вероятно что вы делаете какую-то дичь, которую делать совсем не нужно. Считайте это спасательным кругом, а не панацеей. А если вы так будете делать, то рано или поздно вы прийдете на SO с вопросом почему игра тормозит, вас попросят показать код и ничего не найдут просто потому, что проблема тормозов не в коде. И намучаетесь вы с оптимизациями ой как сильно.

Источник

Система управления в 2D платформерах

Конечно, когда мы говорим о жанре платформер, тем более в 2D играх, то система управления здесь реализуется на порядок проще, чем в более крупных 3D играх, к тому же, Unity предлагает множество уже готовых решений и все, что вам требуется – только правильно их использовать.

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

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

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

Система команд

код движения персонажа в unity 2d. 1 sozdaem novyj kanvas na scene. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-1 sozdaem novyj kanvas na scene. картинка код движения персонажа в unity 2d. картинка 1 sozdaem novyj kanvas na scene. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Создаем скрипт с перечислениями ActionType в котором будут находится команды.

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

Дальше создадим персонажа на сцене.

код движения персонажа в unity 2d. 2 create char. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-2 create char. картинка код движения персонажа в unity 2d. картинка 2 create char. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Дальше кидаем скрипт Character на персонажа на сцене и возвращаемся к канвасу, где продолжим настраивать наши кнопки.

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

код движения персонажа в unity 2d. 3 event trig. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-3 event trig. картинка код движения персонажа в unity 2d. картинка 3 event trig. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Поэтому нажимаем кнопку AddNewEventType в компоненте EventTrigger и ищем эти события, после чего добавляем их.

код движения персонажа в unity 2d. 4 event trig 2. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-4 event trig 2. картинка код движения персонажа в unity 2d. картинка 4 event trig 2. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

код движения персонажа в unity 2d. 5 event trig 3. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-5 event trig 3. картинка код движения персонажа в unity 2d. картинка 5 event trig 3. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Добавляем его в список действий.

код движения персонажа в unity 2d. 6 event trig 4. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-6 event trig 4. картинка код движения персонажа в unity 2d. картинка 6 event trig 4. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

После этого можно запустить и протестировать вызов команд в игре, нажатием на разные кнопки.

код движения персонажа в unity 2d. 7 console action. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-7 console action. картинка код движения персонажа в unity 2d. картинка 7 console action. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Обработка команд

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

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

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

Перед тем как выполнить эту команду, необходимо дополнительно проверить, стоит ли на “ земле ” наш персонаж. Для этого добавим простой коллайдер BoxCollider2D персонажу и настроим его.

код движения персонажа в unity 2d. 8 char collider. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-8 char collider. картинка код движения персонажа в unity 2d. картинка 8 char collider. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

В методе CheckGround будем проверять, находится ли персонаж на поверхности. Для этого проверим коллайдер персонажа на соприкосновение с землей.

Для этого используем позицию point и размер size коллайдера персонажа.

Далее методом Physics2D.OverlapBox проверим наличие поверхности под “ ногами ”.

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

Физический движок Unity – это самостоятельная система обработки физических объектов и чем больше этих объектов будет на сцене? тем больше ресурсов уйдет на их обработку, так что для лучшей работы игры следует максимально минимизировать их кол-во.

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

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

код движения персонажа в unity 2d. 9 fireball. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-9 fireball. картинка код движения персонажа в unity 2d. картинка 9 fireball. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Методы обработки

Для обработки движения двух разных типов объектов ( Transform и Rigidbody ) существует два разных метода Update и FixedUpdate – каждый из них используется для своих целей.

Общее у этих методов то, что они оба вызываются через определенное время, Update – каждый кадр, а FixedUpdate – каждый промежуток времени.

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

Многие начинающие разработчики часто работают с Rigidbody в разных методах: ускоряют, замедляют их, придают им импульсы, бросают и так далее. Но с физическими телами рекомендуется работать именно в методе FixedUpdat. Даже если вы 10 раз измените позицию тела Rigidbody в том же методе Update или в любом другом методе, то все равно эти изменения вступят в силу только в момент вызова метода FixedUpdate, какая частота кадров у вас бы ни была.

В отличие от Transform’а у физического тела Rigidbody есть несколько способов перемещения.

Движение с ускорением

Теперь попробуем применить выбранный тип движения для персонажа, для этого вернемся в скрипт персонажа Character, где создадим новый метод FixedUpdate и пару переменных для перемещения: moveSpeed для скорости движения и jumpForce для силы прыжка.

Сначала определим, в какую сторону персонажу нужно совершать ускорение по оси X. Для этого с помощью переменной directionRight проверим направление персонажа, если ее значение true, значит ускорять объект нужно вправо с положительным значением, если же значение false, то будем ускорять объект влево с отрицательным значением.

Здесь ускорение по оси Y оставляем неизменным – персонаж сам будет обрабатывает вертикальное ускорение.

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

Чтобы проверить, добавим на сцену поверхность с коллайдером.

код движения персонажа в unity 2d. 10. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-10. картинка код движения персонажа в unity 2d. картинка 10. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

код движения персонажа в unity 2d. 11 zero friction. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-11 zero friction. картинка код движения персонажа в unity 2d. картинка 11 zero friction. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

код движения персонажа в unity 2d. 13 physic material screen. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-13 physic material screen. картинка код движения персонажа в unity 2d. картинка 13 physic material screen. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Перекинем физический материал в поле Material коллайдера поверхности и снова тестируем.

код движения персонажа в unity 2d. 14 more friztion. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-14 more friztion. картинка код движения персонажа в unity 2d. картинка 14 more friztion. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Изменяя коэффициент трения Friction физического материала можно добиться нужно результата движения по поверхности.

Импульс

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

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

код движения персонажа в unity 2d. 15 gravity. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-15 gravity. картинка код движения персонажа в unity 2d. картинка 15 gravity. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

код движения персонажа в unity 2d. 16 physics 2d settings. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-16 physics 2d settings. картинка код движения персонажа в unity 2d. картинка 16 physics 2d settings. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Снова проверим результат.

код движения персонажа в unity 2d. 17. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-17. картинка код движения персонажа в unity 2d. картинка 17. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Заключение

Вот так легко и просто можно создать систему управления персонажем с помощью команды игрока. Теперь вы запросто сможете подключить к готовому персонажу анимации и добавить в игру другие объекты.

Источник

Код движения персонажа в unity 2d

Главная » Как реализовать движение в разных игровых жанрах в Unity

Как реализовать движение в разных игровых жанрах в Unity

В этом очень «подвижном» уроке вы узнаете, как реализовать движение в разных игровых жанрах на движке Unity — как в 2D, так и в 3D.

Версия: C# 7.3, Unity 2019.3, Unity

В данном уроке вы узнаете, как реализовать в Юнити четыре типа движения в разных игровых жанрах. Вы создадите простую игру с одной предысторией с двумя причудливыми персонажами, Катто и Ратто. Посмотрите, как они оживают в четырех различных контекстах:

Примечание. В этом уроке предполагается, что у вас есть базовые знания Unity и небольшой навык написания кода. Если вам нужно изучить основы, то почитайте «Начало работы с Unity» и «Введение в создание скриптов в Unity».
Также для этого урока необходим установленный редактор Unity версии 2019.1.3 или выше.

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

Скачайте проект, используя кнопку «Скачать материалы урока», которая находится в начале страницы, затем распакуйте файлы и откройте проект в Unity. Проверьте структуру папок в окне Project:

код движения персонажа в unity 2d. p1. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p1. картинка код движения персонажа в unity 2d. картинка p1. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

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

Различные типы движений в играх

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

Движение в 2D против 3D

Совершенно реальные 2D-миры невозможны. 2D и 3D — это просто модели, нарисованные для отражения восприятия людей. Проверьте, как выглядит Катто в 2D и 3D:

код движения персонажа в unity 2d. p2. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p2. картинка код движения персонажа в unity 2d. картинка p2. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

В этом уроке вы будете работать как с 2D так и с 3D движением. Но сначала вам нужно узнать об одном важном представлении: трансформации объектов в Unity.

Понимание трансформации игровых объектов

Инструмент Transform состоит из 3 компонентов. Position — в основном представляет собой точку в трехмерном пространстве. Rotation — определяет ориентацию объекта в трехмерном пространстве. И компонент Scale — определяет размер игрового объекта.

код движения персонажа в unity 2d. p3. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p3. картинка код движения персонажа в unity 2d. картинка p3. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

В Юнити вы можете видеть три компонента инструмента Transform следующим образом:

код движения персонажа в unity 2d. p4. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p4. картинка код движения персонажа в unity 2d. картинка p4. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Обратите внимание, что у значений Position, Rotation и Scale также есть значения X, Y и Z. Каждый набор значений X, Y и Z известен как Vector3.

Теперь, когда у вас есть эта информация, вы можете переходить к первому типу игры: 2D-платформеры.

Реализация движения в двумерной игре-платформере

В качестве первого шага вы поработаете над созданием движения в 2D-платформере. Вот некоторые примеры опубликованных игр в этом жанре: Super Mario Bros., Sonic, Castlevania, Ghouls ‘n Ghosts, Rayman Legends, Mega Man, Metroid и Ninja Gaiden.

Многие думают, что платформеры проще всего программировать просто потому, что они выглядят простыми. Персонаж прыгает с одной платформы на другую, насколько это может быть сложно, правда? На самом деле, 2D платформеры сегодня могут быть очень сложными. Скоро вы поймете почему.

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

Откройте сцену в RW/2D Platformer Movement/Scenes.

Это окно Hierarchy:

код движения персонажа в unity 2d. p5. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p5. картинка код движения персонажа в unity 2d. картинка p5. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Разверните Player Objects. Вы поработаете с PaperCatto.

Если вы не видите PaperCatto в окне Scene, то вот простая хитрость: выберите его в окне Hierarchy, нажмите на кнопку F в окне Scene, затем нажмите на кнопку 2D View.

код движения персонажа в unity 2d. p6. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p6. картинка код движения персонажа в unity 2d. картинка p6. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Добавление движения

Есть два типа движений:

Выбрав PaperCatto, придайте Катто некоторые физические свойства. Это позволит ему передавать движения и перемещаться. Добавьте компонент Rigidbody 2D:

код движения персонажа в unity 2d. p7. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p7. картинка код движения персонажа в unity 2d. картинка p7. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Чтобы Катто проявлял чувства и выражал позу, добавьте компонент Animator:

код движения персонажа в unity 2d. p8. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p8. картинка код движения персонажа в unity 2d. картинка p8. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

И наконец, Котто нужен компонент Box Collider 2D, чтобы была возможность сталкиваться с другими объектами:

код движения персонажа в unity 2d. p9. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p9. картинка код движения персонажа в unity 2d. картинка p9. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Теперь нажмите кнопку Play.

код движения персонажа в unity 2d. p10. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p10. картинка код движения персонажа в unity 2d. картинка p10. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Упс, это выглядит неудобно! По крайней мере, это работает.

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

Итак, Катто теперь может двигаться, но вам все еще нужно сделать некоторые исправления, чтобы заставить его двигаться правильно. Разверните компонент Box Collider 2D и нажмите на кнопку Edit Collider.

код движения персонажа в unity 2d. p11. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p11. картинка код движения персонажа в unity 2d. картинка p11. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

код движения персонажа в unity 2d. p12. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p12. картинка код движения персонажа в unity 2d. картинка p12. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

Измените параметр Gravity Scale на 2 в компоненте Rigidbody 2D. Он контролирует величину силы тяжести, которая применяется к Катто. Низкое значение, например 1, заставило бы Катто прыгать очень высоко, как если бы Катто был на Луне. Например, 2 делает силу прыжка в этом конкретном случае большее естественной.

код движения персонажа в unity 2d. p13. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p13. картинка код движения персонажа в unity 2d. картинка p13. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

И наконец, в разделе Constraints убедитесь, что отметили Freeze Rotation Z. Это предотвратит падение Катто во время бега.

Реализация Animator Controller

Последнее, но не менее важное: подключите компонент Animator Controller. Выбрав PaperCatto, разверните Animator, затем выберите PaperCatto в качестве контроллера:

код движения персонажа в unity 2d. p14. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p14. картинка код движения персонажа в unity 2d. картинка p14. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Нажмите Play и… Вуаля! Разве это не самая красивая бумажная кошка, которую вы когда-либо видели?

код движения персонажа в unity 2d. p15. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p15. картинка код движения персонажа в unity 2d. картинка p15. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Написание скрипта движения для 2D-платформера

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

Представьте, что вы хотите создать игру в стиле Super Mario Bros. с Катто в главной роли. Какое движение вам нужно? Что ж, вам нужно будет водить Катто по осям X и Y и поворачивать его:

код движения персонажа в unity 2d. p16. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p16. картинка код движения персонажа в unity 2d. картинка p16. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Здесь Катто перемещается по оси X, двигаем его слева направо и обратно:

код движения персонажа в unity 2d. p17. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p17. картинка код движения персонажа в unity 2d. картинка p17. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Здесь Катто вращается вокруг оси Y, поворачиваем его слева направо и обратно:

код движения персонажа в unity 2d. p18. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p18. картинка код движения персонажа в unity 2d. картинка p18. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Перемещение Катто вправо и влево

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

Начните с перетаскивания файла CattoMovement.cs в PaperCatto, чтобы добавить скрипт в качестве нового компонента:

код движения персонажа в unity 2d. p19. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p19. картинка код движения персонажа в unity 2d. картинка p19. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Следующий шаг — написать скрипт.

Дважды нажмите на CattoMovement.cs, чтобы изменить его.

В скрипте будут три главные группы переменных. Первая группа сохраняет компоненты. Добавьте эти две строчки в позицию //1:

Эти две строчки кода содержат информацию для перемещения и анимации Катто соответственно.

Здесь вы структурируете переменные в соответствии с логикой «Защита, Тип и Имя»:

код движения персонажа в unity 2d. p20. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p20. картинка код движения персонажа в unity 2d. картинка p20. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Обратите внимание, что чем проще имена переменных, тем легче их читать.

Чтобы использовать компоненты Animator и Rigidbody 2D вы должны указать Unity запомнить их. Итак, теперь вы должны сообщить Юнити, что делать и где найти эту информацию.

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

Теперь вам нужно отслеживать состояние Катто. Например, вам нужно знать касается ли Катто поверхности или прыгает.

Вторая группа сохраняет логические значения. Добавьте следующие строчки кода в позицию //2:

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

Даем Катто способность прыгать

Эта последняя группа переменных хранит ввод и специальный компонент, позволяющий прыгать. Добавьте эти шесть переменных в позицию // 3:

LayerMask — удобный инструмент Unity для разделения и упорядочивания мирового пространства на уровни. На простом английском языке говорится: «Эй, Юнити, эти два объекта находятся в одном пространстве, поэтому они должны взаимодействовать друг с другом». В этом случае Катто и поверхность находятся в одном пространстве, поэтому они сталкиваются.

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

Двигаемся дальше, Update — отличное место для опроса нажатых кнопок, так как данная функция вызывается каждый кадр.

Катто не найдет Ратто, если не сможет двигаться, поэтому так держать!

Завершение движения

Впереди две задачи: проверить, действительно ли Катто находится на поверхности, и проверить ввод с клавиатуры.

Добавьте следующий строчки кода в метод Update :

Переменная moveInput кеширует горизонтальную ось клавиатуры. Популярная викторина: знаете ли вы, какой тип у этого значения?

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

Добавление условий к движению

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

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

Добавьте второе условие следующим образом:

И наконец, как и прежде, этот код говорит: «Эй, Юнити, возьми Animator и установи триггер Jump так, чтобы Катто выглядел так, как будто он прыгает».

Вот третье условие:

И для последнего условия:

Вы только что выполнили несколько очень важных движений: ходьба, прыжки, приседание и снова вставание. Далее вы сделаете что-то еще более интересное!

Отражение спрайта Катто

Добавьте следующий код:

Обратите внимание, что вы устанавливаете переменной cattoIsFacingRight противоположное значение каждый раз, когда вызываете функцию.

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

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

Проще простого, не так ли?

Отражение спрайта Катто в соответствии с его движениями

Добавьте следующий код:

Вы выполнили три последних условия!

Сначала добавьте эти два оператора if ниже:

На английском языке первое выражение гласит: «Если Катто смотрит не в правильном направлении, и кто-то нажимает клавишу, чтобы переместиться вправо: переверните Катто.» Оператор else if противоположен: «Если Катто смотрит вправо и ввод указывает налево: переверните Катто».

Теперь, для последней настройки, добавьте этот код ниже:

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

Вернитесь в окно Hierarchy, найдите CheckGround внутри PaperCatto и перетащите этот объект в окно Inspector.

Попробуйте установить следующие значения:

код движения персонажа в unity 2d. p21. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p21. картинка код движения персонажа в unity 2d. картинка p21. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

код движения персонажа в unity 2d. p22. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p22. картинка код движения персонажа в unity 2d. картинка p22. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

И наконец, нажмите на кнопку Play и удивитесь этой кошачьей натуре!

код движения персонажа в unity 2d. p23. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p23. картинка код движения персонажа в unity 2d. картинка p23. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Кодирование 2D-движения с видом сверху

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

Среди выпущенных игр этого жанра: Bomberman, Golden Axe Warrior, The Legend of Zelda, BattleShip and HALO Spartan Assault.

Подключение элементов

Откройте сцену в RW / 2D TopDown Movement / Scenes.

Теперь в окне Hierarchy выберите Player Objects > Catto > Catto, тот, у которого есть Sprite Renderer.

Добавьте в окне Inspector следующие элементы:

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

код движения персонажа в unity 2d. p24. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p24. картинка код движения персонажа в unity 2d. картинка p24. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Компонент Animator не будет работать без параметра Controller. Итак, перейдите в 2D TopDown Movement / Models / Catto и найдите контроллер CattoAnimator. Перетащите его в параметр Controller компонента Animator в окне Inspector:

код движения персонажа в unity 2d. p25. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p25. картинка код движения персонажа в unity 2d. картинка p25. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Нажмите Play и … Катто падает. Чтобы это исправить, вам нужно настроить Rigidbody 2D. Гравитация заставляет Катто падать, поэтому установите для свойства Gravity Scale значение 0 и повторите попытку.

код движения персонажа в unity 2d. p26. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p26. картинка код движения персонажа в unity 2d. картинка p26. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

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

Написание 2D скрипта движения с видом сверху

Перейдите в 2D Top Down Movement / Scripts и перетащите TopDownMovement.cs в Catto. Вы также можете сделать это:

код движения персонажа в unity 2d. p27. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p27. картинка код движения персонажа в unity 2d. картинка p27. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Идеально! Дважды щелкните на скрипт в окне Inspector, чтобы отредактировать его. Этот скрипт кажется намного проще предыдущего.

Теперь добавьте эти три переменные:

Так же как раньше используйте Update для получения ввода с клавиатуры. Добавьте этот код:

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

Это будет примерно так:

код движения персонажа в unity 2d. p28. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p28. картинка код движения персонажа в unity 2d. картинка p28. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

код движения персонажа в unity 2d. p29. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p29. картинка код движения персонажа в unity 2d. картинка p29. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

А что насчет последнего вызова? Какая величина?

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

Почти готово… Не забудьте установить Velocity в окне Inspector. 3 — хорошее значение для начала.

Нажмите Play и …

код движения персонажа в unity 2d. p30. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p30. картинка код движения персонажа в unity 2d. картинка p30. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Готово! Но подождите, это еще не все.

Перейдите в 2D TopDown Movement/Scripts и добавьте CollectCoins.cs к Катто. Теперь вы действительно можете играть в игру.

Превосходно! Вы закончили движение в 2D-игре с видом сверху.

Нажатие мышью в 3D для вращения и перемещения

Добро пожаловать в 3D-миры! С этого момента все игры, которые мы будем рассматривать, будут в трехмерном пространстве.

Игры с нажатием мышью и указанием курса для поворота и движения используют тип движения как в игре «Diablo», когда вы нажимаете на что-нибудь, чтобы получить контекстную информацию и/или двигаться в определенное место.

Другие примеры выпущенных игр в этом жанре: League of Legends, Age of Empires, Grim Fandango and Monkey Island.

Подключение элементов

Откройте сцену в 3D ClickToRotate Movement / Scene.

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

Вот как это сделать:

код движения персонажа в unity 2d. p31. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p31. картинка код движения персонажа в unity 2d. картинка p31. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Вам также необходимо изменить размер коллайдера. Совет: переключитесь на 2D-вид, чтобы облегчить определение размера.

код движения персонажа в unity 2d. p32. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p32. картинка код движения персонажа в unity 2d. картинка p32. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Чтобы подключить CattoAnimator, разверните Animator в окне Inpector. Перейдите к 3D ClickToRotate Movement/Models/Catto/Animator и перетащите его в Controller.

Вы можете сделать то же самое для Avatar или просто подключите его в окне Inspector:

код движения персонажа в unity 2d. p33. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p33. картинка код движения персонажа в unity 2d. картинка p33. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Наконец, не забудьте отметить Apply Root Motion.

Вот как выглядит финальный результат:

код движения персонажа в unity 2d. p34. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p34. картинка код движения персонажа в unity 2d. картинка p34. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Нажмите на кнопку Play. Катто покажет стандартную анимацию ожидания, хотя он еще не может двигаться.

код движения персонажа в unity 2d. p35. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p35. картинка код движения персонажа в unity 2d. картинка p35. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Итак, теперь вы настроили Катто для анимации. Далее вы заставите его двигаться!

Добавление NavMesh Agent

Есть специальный модуль, который нужен Катто, он называется NavMesh: Nav для навигации, Mesh для … э … mesh: V. Серьезно, это сетка: очень примитивная форма, в которой хранится информация о расстоянии, положении и других простых вычислениях.

Agent — это программа, которая автоматически выполняет определенные задачи.

NavMesh Agent для работы нужен NavMesh

Найдите Nav Mesh Agent в окне Inspector и добавьте его к Катто. Следующие настройки работают прекрасно:

код движения персонажа в unity 2d. p36. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p36. картинка код движения персонажа в unity 2d. картинка p36. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Не бойтесь экспериментировать, особенно с параметрами steering.

Примечание: в этой сцене уже есть NavMesh. Если вы хотите создать свой собственный, вкладка навигации находится под Window > AI > Navigation.

Написание скрипта для поворота и перемещения

Откройте ClickToMove.cs в папке 3D ClickToRotate Movement/Scripts.

Добавьте следующую строчку кода в начало файла:

Затем добавьте три переменные в начало класса:

Как и раньше, вы инициализируете переменные в методе Start :

Добавьте этот код в метод Update :

Говоря простым языком, «Эй, Unity, выстрели лучом, в который я щелкнул, и установи пункт назначения Катто на то место на земле, куда попадет этот луч».

Последний if сравнивает расстояние между двумя точками: где вы щелкнули и где Катто должен остановиться. Вы можете изменить это значение в окне Inspector.

Добавьте скрипт ClickToMove к Катто и запустите игру. Следуйте по пути, чтобы найти Ратто!

код движения персонажа в unity 2d. p37. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p37. картинка код движения персонажа в unity 2d. картинка p37. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Поздравляю! Вы узнали, как перемещать персонажа в трех разных типах игры. Остался еще один.

3D движение танка

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

Во всяком случае, вот вкратце о танковом движении:

Выпущенные игры этого жанра: Resident Evil, Back in 1995 и Silent Hill

Подключение элементов

Откройте сцену в RW / 3D Tank Movement / Scenes.

Выберите Tankatto в окне Hierarchy под Player Objects.

Вы уже знаете строевую подготовку на данный момент. Можете ли вы придумать компоненты для этого в 3D?

Танкатто нужен Box Collider для взаимодействия с миром и Rigidbody, которым будет управлять и двигать игрок.

Вот наглядное пособие:

код движения персонажа в unity 2d. p38. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p38. картинка код движения персонажа в unity 2d. картинка p38. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Не забудьте отредактировать коллайдер:

код движения персонажа в unity 2d. p39. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p39. картинка код движения персонажа в unity 2d. картинка p39. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Перейдите в 3D Tank Movement / Scripts и перетащите TankMovement.cs на Tankatto. Затем откройте его, чтобы отредактировать.

Вот как это должно выглядеть после добавления остальных компонентов:

код движения персонажа в unity 2d. p40. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p40. картинка код движения персонажа в unity 2d. картинка p40. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Написание скрипта движения танка

В вашем исходном скрипте есть шесть разных переменных. Как и раньше, каждый из них относится к чему-то, что вам нужно переместить или оживить Катто. Три из них связаны со скоростью, один — для Rigidbody и два — для ввода.

Добавьте эти переменные в начало скрипта:

Как вы знаете, этот тип игры зависит от двух типов движения: поворот и движение вперед. Итак, на следующем этапе вы научите Катто, как поворачиваться.

Поворачивание Катто

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

Добавьте эти короткие строчки кода в метод FixedUpdate :

Как видите, названия функций представляют их действия.

Теперь добавьте весь код, чтобы сделать Turn() красивой отдельной функцией:

Что здесь происходит?

Учтите, что turnInput и turnSpeed считываются несколько раз в секунду. Вы должны взять ситуацию под контроль.

На изображении ниже указан порядок выполнения:

код движения персонажа в unity 2d. p41. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p41. картинка код движения персонажа в unity 2d. картинка p41. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Функция Unity MoveRotation (Quaternion rot) заставляет вас использовать Quaternion. Но подождите, разве вращения не являются Vector3 в Unity, как сказано в начале урока?

В этом контексте, можете ли вы угадать, по какой оси вы вращаете Катто?

код движения персонажа в unity 2d. p42. код движения персонажа в unity 2d фото. код движения персонажа в unity 2d-p42. картинка код движения персонажа в unity 2d. картинка p42. В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».

Перемещение Катто

Теперь последний шаг: заставить Танкатто двигаться вперед. Для начала создайте новую функцию с именем Move() следующим образом:

Эта последняя часть заботится о движении … она почти такая же, как и предыдущая.

И наконец, MovePosition принимает параметр movement и добавляет его к текущему положению Танкатто.

Танкатто еще не может двигаться. Не забудьте установить значения в Инспекторе. Вы можете использовать эти числа или изменить их по своему усмотрению:

Нажмите Play и проверьте, все ли работает так, как задумано.
Вы можете подумать: а где же самое интересное в перемещении и вращении танка?

Помните, что у Танкатто есть компонент Missile Logic в окне Inspector, но изучение того, как он работает, не входит в данный урок. Теперь, когда вы зашли так далеко, он нужен только для того, чтобы оживить ситуацию.

Нажмите кнопку мышки и посейте хаос!

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

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

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

Поздравляем с окончанием урока! Помните, что вы можете получить готовый проект, нажав кнопку «Скачать материалы урока» вверху страницы.

Жанр попойки, детка! Попробуйте смешать два или более жанра в одной игре. Смешивание — лучший способ открыть для себя что-то новое. Например, попробуйте перенести PaperCatto в 3D Tank Movement, как если бы это была бумажная мишень. Также можно попробовать сделать движущиеся мишени.

Вы определенно захотите проверить это, чтобы повысить свою ци как разработчика игр:

Как создать игру Bomberman в Unity. Или, если вам нравятся видео, посмотрите эту впечатляющую серию статей Брайана Моакли «Основы C#».

Большое спасибо за чтение и выполнения урока по разным типам движения в Unity. Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь присоединиться к обсуждению ниже!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *