Как сделать смерть в 2д юнити

от admin

Как сделать игру на Unity в 2д с нуля #3 | Окно смерти

Всем привет ведь я на позитиве! Начинаю курс по Unity2d с нуля, где почти подробно рассказываю как и что происходит. На этом курсе мы от полного недопонимания дойдем до готовой версии Flappy bird. Полезные ссылки: — Дискорд сервер: Телеграмм канал: +M6DHf27Q1-tiYTk6 JetBrains Rider — #section=windows Unity — Графика для Flappy bird — Шрифт Flappy bird — Моя игра («Furaito»): — СОЦСЕТИ: шифруюсь. Ключевый слова: Юнити, юнити, юнити2д, юнити 2д, Unity2d, Unity, юнити с нуля, юнити с полного нуля, как сделать игру, как создать игру, Gamedev, gamedev, разработка игр, 2д, Rider, JetBrains Rider, как сделать игру быстро, flappy bird на юнити, flappy bird с нуля, как сделать игру с полнейшего нуля

stickman

Почему у меня текс верх ногами появляется?

Иван Павленко

Прекрасные уроки, смотриться легко, понятно и интересно, большое спасибо!

Alexandr_5

Кстати мне интересно узнать как можно у спавнящихся объектов отключать и включать коллизию?

GhstMortis��

А как сделать, чтобы в райдере выскакивали подсказки как у тебя, пишешь одно слово и он выдает строчку нужую

single

Очень хороший контент!Вы все хорошо и просто объясняете а главное интересно! Спасибо

ALTAIR

зачем брать textmeshpro, когда есть обычный text?

iliyaqq

когда пытаюсь поставить скрипт GameManager в GameManager парт то выдает ошибку :/ что делать?

Account 2 main, but com

Object reference not set to an instance of an object
— GameManager.instance.Lose();

Не понимаю, что в этой строке не так

Krassav4ik

Что делать если кнопка рестарт не работает?

Tony Montana

почему когда добавляю в pipe box cololider 2d , то мой куб просто улетает за приделы

BAD bro

Почему пишет что ошибки в строчках
Private void OnCollisionEnter2D*(Collision2D other);
< *
if(other*)
>
> *
* это то что подчёркнуто, пишет что ошибки

Racks

Привет! А что делать если коллайдеры не копируются?

Канат Калдыгожин

У меня рестарт не работает, должно было выходить окошко, но не выходит, а игра продолжается. Пишет "NullReferenceException: Object reference not set to an instance of an object"
Что делать?

F1rk — Standoff2

Слушай а как ты рестарт сделал? У меня почему то не получается?

00 00

“GameManager” does not exist in the current context
Всплывает со ссылкой на скрипт player, уже всё перепроверил, не пойму в чём дело
Кто подскажет

Почему-то первая сцена начинается заново только при столкновении с первыми трубами, если столкнется с копиями никакого действия, игра идёт дальше, в чем может быть проблема?(

iower

Все я всё пофиксил просто неправильно написал слово в гейм мэнэджэре. Спасибо за уроки

iower

'GameManagerdoes' not contain a definition for 'instance' появилась такая ошибка.
if (other. GameObject. CompareTage("PipePart"))
<
CameManager. instance. Lose() ;
>
Где-то здесь

2D игра на Unity. Подробное руководство. Часть 3

Снаряд – объект, которым мы будем пользоваться очень часто. В игре будет несколько сцен, в которых игрок будет стрелять. Что мы должны использовать в этом случае? Префаб (Prefab), конечно же! Для этого проделайте следующие действия:

  1. Импортируйте текстуру
  2. Создайте новый спрайт в сцене
  3. Установите изображение на спрайт.
  4. Добавьте «Rigidbody 2D» с равныим нулю значениями «Gravity Scale» и «Fixed Angles».
  5. Добавьте «Box Collider 2D» размером (1, 1) .

Сделайте масштаб таким (0,75, 0,75, 1) для лучшего отображения. Теперь, нам нужно установить новый параметр в «Инспекторе» (Inspector). для этого в «Box Collider 2D» поставьте галочку напротив свойства «IsTrigger». Триггер коллайдера создает событие при столкновении, но не используется при моделирования физики. Это значит, что выстрел пройдет сквозь объект при соприкосновении — никакого «реального» взаимодействия не будет. А вот у другого коллайдера это спровоцирует событие «OnTriggerEnter2D».

Та-дам! У нас появился выстрел. Теперь настало время немного поскриптить. Создайте скрипт, назвав его «ShotScript»:

Прикрепите «ShotScript» к спрайту. Также добавьте «MoveScript», т.к. ваши снимки будут двигаться. Теперь перетащите объект выстрел в панель «Проект» для создания Префаба. Он нам совсем скоро понадобится. Вы должны иметь следующую конфигурацию:

Конфигурация Выстрел 1

Если вы запустите игру с помощью кнопки «Play», вы увидите, что выстрел движется.

Столкновения и повреждения

Тем не менее, выстрел (пока) не наносит повреждений. Ничего удивительного, ведь мы не сделали скрипт обработки повреждений. Создадим его, назвав «HealthScript»:

Добавьте «HealthScript» на префаб спрута.

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

Здоровье врага превосходит урон от выстрела, поэтому он выживет. Попробуйте изменить значение hp в «HealthScript» врага:

Стрельба

Удалите выстрел из сцены. Теперь, когда мы с ним закончили, ему нечего там делать. Нам нужен новый скрипт для стрельбы. Создайте его под именем «WeaponScript». Этот скрипт мы будем использовать везде (игроки, враги и т.д.) Его цель заключается в to instantiate снаряда перед игровым объектом, к которому он привязан. Вот полный код, больше, чем обычно. Объяснения ниже:

Прикрепите этот скрипт к игроку. Скрипт делится на три части:

Переменные во вкладке «Inspector»

Здесь у нас есть два члена: shotPrefab и shootingRate .

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

Выберите игрока в сцене «Hierarchy». В компоненте «WeaponScript», вы можете увидеть свойство «Shot Prefab» со значением «None». Перетащите префаб «Shot» на это место:

Использование префаба

Unity автоматически дополнит скрипт это информацией. Удобно, не так ли?

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

Оружие обладает определенной частотой выстрелов. Без этого параметра можно было бы выпускать неограниченное количество патронов в каждом кадре.

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

3. Публичный метод создания атаки

Главная цель этого скрипта – активироваться через другой скрипт. Поэтому для создания снаряда мы используем публичный метод.

Создав екземпляр снаряда, мы извлекаем скрипты объекта выстрела и оверрайдим некоторые переменные.

Внимание: С помощью метода GetComponent<TypeOfComponent>() можно создать точный компонент (а значит, и скрипт, потому что скрипт – тоже компонент) объекта. Используйте generic ( <TypeOfComponent> ) для обозначения конкретного компонента, который вам нужен.
Кроме того, у нас есть GetComponents<TypeOfComponent>() , вызывающий список вместо первого и т.д.

Использование оружия с классом игрока

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

В самом деле, если «WeaponScript» был бы привязан к классу, мы никогда не смогли бы использовать метод Attack(bool) .

Давайте вернемся к нашему «PlayerScript».

В функции Update() добавьте этот кусочек кода:

На данном этапе неважно, поставите вы его перед или после движения.

  1. Мы определяем нажатие кнопки стрельбы ( click или ctrl по умолчанию).
  2. Извлекаем скрипт объекта.
  3. Мы запускаем Attack(false) .

Запустите игру с помощью кнопки «Play». Вот что вы должны получить:

Пули летят слишком медленно? Поэкспериментируйте с префабом «Shot» чтобы выбрать ортимальное значение. Попробуйте также добавить вращение игроку: (0, 0, 45) . Пули двигаються под углом 45 градусов, даже если вращение спрайта выстрела является некорректным – а ведь мы его не изменили.

Shooting rotation

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

Вражеский снаряд

Мы создадим новый снаряд с помощью этого спрайта:

Вражеский снаряд

Если вы так же ленивы, как я, продублируйте префаб «PlayerShot», переименуйте его в «EnemyShot1» и измените спрайт, как описано выше.

Для дублирования создайте экземпляр, перетащив его на сцену, переименовав созданный игровой объект и, наконец, сохранив его как `Prefab’.

Правильный масштаб — (0.35, 0.35, 1) .

Вот, что у вас должно получиться.

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

При нажатии «Play» произойдет выстрел, который потенциально может уничтожить врага. Это из-за свойств «ShotScript» (которые по умолчанию плохо совместимы с Poulpi).

Не изменяйте ничего. Помните наш «WeaponScript»? Он то и установит правильные значения.

У нас есть префаб «EnemyShot1». Удалите экземпляры со сцены, если они есть.

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

  1. Добавьте «WeaponScript» врагу.
  2. Перетащите префаб «EnemyShot1» в переменную «Shot Prefab» скрипта.
  3. Создайте новый скрипт под названием «EnemyScript». Он просто будет запускать стрельбу в каждом кадре. Что-то вроде автострельбы.

Прикрепите этот скрипт к осьминогу. У вас должно получиться следующее (заметьте, что частота стрельбы немного звеличилась до 0.75 ):

Настойка осьминога с оружием

Замечание: Если вы модифицируете игровой объект в сцене, не забудьте сохранить все изменения в префабе , использовав кнопку «Применить» справа сверху от панели «Инспектор».

Попробуйте сыграть и посмотреть!

Итак, мы сделали то, что хотели и теперь и по нам тоже стреляют.

Если повернуть врага, вы можете сделать его стреляющим в его слева, но, хм. спрайт повернулся вверх ногами, а нам это не нужно.

Перевернутый спрут

Давайте исправим это недоразумение.

Стрельба в любом направлении.

«WeaponScript» был написан особым образом: вы можете выбрать направление стрельбы, просто вращая прикрепленный игровой объект. Мы уже видели это раньше, когда вращали спрайт врага. Суть в том, чтобы создать пустой игровой объект как ребенка префаба врага. Итак, нам нужно:

  1. Создать пустой игровой объект. Назовем его «WeaponObject».
  2. Удалим «WeaponScript», прикрепленный к префабу врага.
  3. Добавим «WeaponScript» к «WeaponObject» и установить свойства префба выстрела как мы это делали раньше.
  4. Повернем «WeaponObject» вот так (0, 0, 180) .

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

Enemy with a new object

However, we have a small change to make on the «EnemyScript» script.

В своем нынешнем состоянии вызов GetComponent<WeaponScript>() в «EnemyScript» возвращает null. В самом деле, «WeaponScript» больше не привязан к одному объекту игры.

К счастью, в Unity также доступен метод, использующий детскую иерархию игрового объекта, который называется GetComponentInChildren<Type>() .

На самом деле, просто для удовольствия, мы также добавили возможность управления несколькими видами оружия. Мы просто манипулируем списком вместо одного экземпляра компонента. Взгляните на весь «EnemyScript»:

Наконец, нужно обновить скорость выстрела путем настройки публичной пременной «MoveScript» из префаба «EnemyShot1». Скорость выстрела должна быть больше скорости движения спрута:

Мы сделали великого и ужасного осьминога. А давайте еще реализуем стрельбу в двух направлениях?

Стрельба а двух направлениях

Эта задача реализуеся всего в пару кликов. Для этого не нужны никакие скрипты:

  1. Добавьте другое оружие врагу (дублируя первый «WeaponObject»).
  2. Измените угол поворота второго «WeaponObject».

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

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

Нанесение урона игроку

Наши осьминоги внушают ужас? Как бы не так! Да, они могут стрелять, но это не наносит повреждения игроку. Может, у них холостые патроны? Давайте разбираться.

Просто добавьте «HealthScript» на игрока. Убедитесь, что сняли галку с поля «IsEnemy».

Конфигурация скрипта, отвечающего за здоровье игрока

Запустите игру и почувствуйте разницу:

Бонус

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

Солкновения игрока с врагом

Давайте посмотрим, как мы можем обработать столкновения между игроком и врагом, поскольку сейчас они сталкиваются друг с другом без последствий. Столкновение — это результат пересечения двух не-триггерных 2D коллайдеров. Нам просто нужно обрабатывать событие OnCollisionEnter2D в PlayerScript :

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

Массив снарядов

Когда вы играете, вы можете наблюдать ва вкладке «Иерархия» (Hierarchy), что игровые объекты создаются и удаляются только через 20 секунд (если они не сталкиваются с игроком или врагом).

Читать:
Как сделать цикл в excel

Если ваша цель создание огневой завесы для которой требуется МНОГО пуль, эта техника вряд ли подойдет.

Один из способов увеличить количество пуль – использовать массив. По сути, это набор пуль ограниченного размера. Когда массив заполнен, удалите старый объект и замените его на новый.

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

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

Поведение пули

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

Некоторые библиотеки вроде BulletML значительно упрощают определение сложных и зрелищных bullet patterns.

BulletML для Unity

Если вы хотите сделать полную версию игры в жанре Shoot’Em Up, ознакомьтесь с нашим плагином BulletML for Unity

Задержка выстрела

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

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

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

Еще раз, это зависит от вас. Все зависит исключительно от того, чего вы хотите достичь с вашим геймплеем.

В следующем уроке

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

Результат

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

Создаем Экран Смерти в Юнити | Смерть Персонажа | Геймдев

Если вам понравилось бесплатно смотреть видео создаем экран смерти в юнити | смерть персонажа | геймдев онлайн которое загрузил Dev Hub Разработка Игр 20 марта 2020 длительностью 00 ч 03 мин 02 сек в хорошем качестве, то расскажите об этом видео своим друзьям, ведь его посмотрели 3 104 раза.

Funny Frames

Почему он мне пишет что нет имени deathScreen? Куда его записать?

Vlad Rus VR
Yama Ro

Все огонь, только код под микроскопом смотреть надо)

Валерия Маркова

Нихера не работает

ShadowTesi

В интро я обосрался так как рядом был папа.

Сергей Куликов

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

Freyzi — craft

Привет всем можете мне помочь я вписую !deathScreen и deathScreen а мне пишет такого не существует

Роликов то топовый но если кто-то смотрит ролик с телефона фиг разберёшь что там написано в коде)Пришлось ролик на ПК запустить)

Forse Trap

Как сделать анимацию мигания текста ?

Gg Ggh
Gg Ggh

я хочу задать вопрос:
А вот как сделать так чтобы панель поражения появлялась когда ты коснешься кого-го нибудь объекта?

anton pushcashu

Nifiga ne poniatno !

BystBS

Уродский контент. Некоторые мелочи, которые для тебя очевидны, для новичков не так уж и понятны. И если ты пропустил 1 шаг, который крашит весь процесс, то зачем мне нужен такой туторил ? Чтобы я потом пытался решить ошибку, о которой ты не сказал ?
Тьфу блять !

Максим Толстобров

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

Michael Michael

А как сделать, чтобы именно, когда ты мышкой нажмешь на какой-то обьект, в данном случае на RESTART, чтобы что-то срабатывало?

Покадровая спрайтовая 2д анимация в Unity

В Unity, как и во многих других движках существует несколько видов анимации. Но в данной статье речь пойдёт о покадровой спрайтовой анимациии. Это именно та анимация, которая присутствовала в играх на наших игровых приставках, и к которой все привыкли. Суть спрайтовых анимаций заключается в быстрой смене готовых кадров, которые создают эффект анимации.

В данной статье мы разберём анимацию на примере трёх самых популярных состояний в 2д платформере:

  • Состояние покоя
  • Бег, или ходьба
  • Прыжок

Подготовка кадров

Первым делом нам необходимо загрузить в окно Project спрайты для наших анимаций. На изображении ниже, я загрузил все необходимые кадры анимаций в три спрайта для каждого состояния(покоя, прыжок, бег). Вы можете все кадры использовать отдельными спрайтами, а можете сгруппировать как у меня. Это впринципе не важно.

Создание Анимации (Animation)

Теперь нам необходимо каждое из состояний анимировать. Для этого открываем окно Animation, с помощью вкладки Window — Animation — Animation. Откроется данное окно.

Благодаря этому окну, мы и будем превращать наши кадры в анимацию. Для этого выбираем игровой объект, который анимируем, в нашем случае это персонаж с именем Player. А далее нажимаем кнопку Create, которая изображена на рисунке выше. Далее откроется окно, в котором необходимо указать название для нашей первой анимации покоя. Назовём её idle. Готово, наша анимация создана, но пока она ещё пустая, и не имеет никаких кадров.

Важно №1. После создания ПЕРВОЙ анимации, автоматически создаётся и контроллер анимаций(Animator), с таким же названием, как и у объекта, которому мы и создаём анимацию. В моём случае название аниматора будет Player. Контроллер анимаций хранит ВСЕ состояния анимаций данного объекта(покой, бег, прыжок), и благодаря ему происходит смена этих состояний анимаций с одной на другую. На рисунке у нас создана пока ещё пустая анимация покоя idle, и контроллер анимаций Player.

Важно №2. Так же, после создания первой анимации, в Inspector-е данного объекта создаётся и компонент Animator, который несёт в себе ссылку на наш контроллер анимаций. Благодаря этому компоненту мы и будем в дальнейшем через скрипт C# менять состояния анимаций с одной в другую.

Перейдём к окну Animation. Перенесём наши спрайты из окна Project, в пустое пространство окна Animation. После нажатия клавиши "пробел", Вы можете обнаружить, что ваш персонаж на игровой сцене начинает анимироваться.

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

Для этого открываем меню в правом верхнем углу(три точки), и ставим галочку на Show Sample Rate. А дальше снижаем значение кадров в поле Samples, например, до 12.

Отлично. Анимация состояния покоя idle готова! Теперь создадим вторую анимацию, бег. Для этого в окне Animation жмём треугольничек, напротив названия Вашей анимации, и в выпадающем списке жмём Create New Clip. После чего прописываем название Вашей анимации бега, например run, и сохраняем.

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

После всех проделанных манипуляций, у нас должно получится 3 анимации(idle, run, jump) и один контроллер(Animator) Player.

Контроллер Анимаций (Animator)

Теперь поработаем с контроллером анимаций. Открываем наш контроллер либо через вкладку Window — Animation — Animator, либо кликнув 2 раза по нашему аниматору Player в окне Project. Откроется окно Animator, которое будет выглядеть примерно так.

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

Например, от состояния покоя idle анимация может быть переключена на анимацию бега run. И это нам нужно указать через стрелочки. Для этого правой кнопкой мыши нажмём на анимацию idle. Далее в выпадающем списке жмём Make Transition, и далее указываем к какому блоку будет вести стрелочка. Укажем на блок run. Ура, стрелочка прехода создана. Создаём такие же стрелочки и между другими анимациями. У Вас должно получится так:

Так же обратите внимание на блок Any Stay, что означает Любое Состояние. Например, чтобы не создавать много стрелочек от множества анимаций к анимации jump, можно сделать всего одну стрелочку от Any State. Это будет тоже самое.

Теперь настроим наши переходы. Для этого жмём на любую БЕЛУЮ стрелочку, и в окне Inspector проводим следующие настройки:

  • В поле Has Exit Time убираем галочку, чтобы анимация прерывалась сразу же, как произойдёт смена анимаций на другую.
  • В поле Transition Duration указываем значение 0, чтобы переход между анимациями был не плавный, а мгновенный.

Такие же настройки нужно проделать со ВСЕМИ БЕЛЫМИ стрелочками.

Готово! Теперь необходимо создать условия, при которых будет осуществляться переход из одной анимации к другой. Для этого создадим две переменные. Одна переменная будет хранить информацию о том, бежит ли наш персонаж — если да, то будем воспроизводить анимацию бега. А вторая переменная будет хранить информацию о том, находится ли наш персонаж в прыжке — если да, то воспроизводим анимацию прыжка.

Создадим эти две переменные с названиями moveX и Jumping с типами Float и Bool соответственно. Для этого в этом же окне выбираем Parametrs, жмём на плюсик, и выбираем тип. Далее указываем название этих переменных.

Переменные созданы, теперь необходимо создать 5 условий перехода, для каждой белой стрелочки. Приведу пример, как создать условие перехода с idle на run. Для этого жмём на белую стрелочку перехода между этими анимациями, и в окне Inspector находим отдел Conditions, в котором указываем, что переход осуществляется тогда, когда переменная moveX имеет значение больше чем 0.1 — то-есть находится в движении по оси X:

По такой же примеру необходимо создать ещё 4 условия для остальных белых стрелочек перехода.

  • От run к idle: переменная moveX имеет значение меньше чем 0.1
  • От Any State к jump: переменная jumping имеет значение true.
  • От jump к idle: переменная jumping имеет значение false.
  • От jump к run: переменная jumping имеет значение false.

Запуск анимаций через скрипт

Мы почти завершили. Отсалось совсем немного. Теперь нам необходимо в эти переменные занести данные из нашего скрипта C#, во время передвижения персонажа и прыжка.

Для этого откройте свой C# скрипт, в котором прописана ваша функция передвижения персонажа, и для начала объявите переменную anim, в котором будет хранится ссылка на наш контроллер.

Далее в методе Start() или Awake() присвоим ссылку к нашей переменной:

Отлично, теперь с помощью метода SetFloat() установим нашей переменной moveX значения полученное от нашего передвижения Mathf.Abs(Input.GetAxisRaw("Horizontal")) по модулю:

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

Теперь работа с прыжком:

В вашем скрипте должна быть переменная, которая отвечает за то, находится ли персонаж на земле или нет. У меня эта переменная называется isGround. Необходимо проверять, если персонаж на земле, то в переменную Jumping заносим false, и анимация прыжка не воспроизводится. А если персонаж находится не на земле, то нужно в переменную Jumping записать true — которая и воспроизведёт анимацию прыжка:

На это всё! Поздравляем, анимация готова.

Важно: В некоторых случаях, в зависимости от анимации прыжка, нам необходимо отменить циклическое воспроизведение анимации прыжка. Поэтому нажмите на стрелочку, исходящую от Any State ведущая к jump, и в окне Inspector в поле Can Transition To поставьте галочку.

Теперь уже точно всё! Надеюсь мне получилось объяснить принцип создания спрайтовой покадровой анимации. Так же напомню, что существует так же и костная анимация, которая так же довольно часто используется. Поэтому, если Вам интересна данная тема, то можете посетить наш гайд по созданию костной 2д анимации.

Если возникли вопросы, задавайте их в комментариях. И не забудьте поставить лайк за столь большой труд 🙂

Похожие статьи