Найти тему

Создаем платформер для Андроид Часть 7 "Прочие настройки и дополнения"

Что еще не хватает?
Нет анимаций и нет озвучки фона. Без этого как-то скучно...
Кстати нет регистрации Рекорда.

Начнем с Анимации Игрока и Двери

Анимация Игрока.
Анимаций по определению несколько видов. Мы тут рассмотрим покадровую спрайтовую анимацию.
Обычно делают три анимации Idle (Покой), Run (Бег), Jump (Прыжок)

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

У меня 5 спрайтов, можно больше...

Спрайты есть. Теперь жмем ПКМ / Window / Animation / Animation

-2

и результатом имеем вот такое окно

-3

Как видно, окно не активно от слова никак! Не беда, не закрывая окна, выбираем объект, которому и делается анимация - в нашем случае это Player - и вот окно активировалось. Появилась кнопка Create

-4

Жмем на кнопку и появляется окно с предложением присвоить имя данной анимации - присваиваем естественно Player и сохраняем, обращая внимание - куда сохраняем!!!

-5

В ассетах в папке Animations должны появиться сразу два файла: контроллер Player и аниматор Player

-6

Переименуем аниматор Player в Idle.

В окне контроллера слева можно увидель имя этой анимации. Для покоя я использую всего два спрайта моего Игрока (1 и 3) - выделяем их и переносим в кадровое поле контроллера

-7

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

Идем в строку Samples и меняем стоящее там значение 60 примерно на 15. Если нажать Пробел, анимация должна заработать. Попробуйте поменять установленную скорость на другую и посмотрите, что из этого выйдет.
В целом анимация Покоя готова. Только не совсем... но об этом чуть позже.

Сначала создаем анимацию Run
В строке Idle жмем треугольник и в выпадающем меню выбираем Create New Clip, даем ему имя Run и видим, что эта анимация тоже появилась в папке Animations
В кадровое поле переносим все спрайты Игрока и в Samples также меняем 60 на 15.

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

Дважды кликаем контроллер Player - откроется окно

-8

И что бы это значило?
Зеленый блок - начальная точка анимации, а желтая стрелка указывает на стартовую анимацию. У нас стартовая анимация Idle, а дальше мы должны в контроллере показать, как все анимации взаимодействуют друг с другом.
Дело в том, что контроллер хранит данные всех анимаций и использует их в нужное время.

Теперь надо связать анимации, но для начала надо их малость растащить по полю примерно так

-9

ЛКМ на Idle, выбираем Make Transition и ПКМ на Run - связь установлена и означает, что после покоя будет бег

-10

Маловато будет!
Надо еще чтобы после бега был покой - ЛКМ на Run, тот же элемент и ПКМ на Idle

-11

Вот теперь почти все в норме.

От Jump проводим стрелочки к Idle и Run

-12

От Any State - стрелочку к Jump

-13

Анимации, а точнее их работу тоже надо настроить малось...
ПКМ на стрелке, она сразу синеет и в инспекторе появляются ее свойства

-14

Интересны пока два пункта Has Exit Time убираем галку и Transition Duration ставим 0

-15

и повторяем процесс с остальными стрелками.

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

Надо создать несколько переменных с разными типами, начнем...
В окне Parameters жмем +, выбираем тип Float, открывается строка, где пишем имя MoovX - движение по горизонтали

-16

Повторяем процесс, выбираем тип Bool и в строке пишем Jump

-17

Это созданы переменные.

Создадим условия...
Начнем с MoovX. Это переход с Idle к Run - нажимаем на соответствующую стрелку и в пункте Conditions инспектора в MoovX ставим значение 0,1

-18

Если пункт Conditions пуст - жмем + и все будет хорошо...
Переходим к стрелке от Run к Idle - все то же самое с разницей, что надо в строке MoovX выбрать вместо Greater Less

-19

Теперь стрелка от AnyState к Jump. Кстати, а что она делает эта структура? AnyState означает "любое состояние". Опция для ленивых, так сказать - чтобы не делать батарею стрелок, достаточно одной...
Жмем на стрелку и в Conditions находим Jump, тут должно стоять положение true

-20

И остались пара стрелок от Jump
Методика та же самая, что и в предыдущем случае с разницей в положении - оно должно быть false

-21

Все!!! Все анимации настроены полностью!!!

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

-22

И добавить несколько строк, связанных с прыжком и движением по горизонтали

-23

Запускаем игру и смотрим - что получилось...

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

-24

Так лучше...

Надо немного напрячься и сделать анимацию двери, когда Игрок собрал нужное колличество очков статичная дверь должна начать открываться, привлекая к себе внимание Пользователя.
Тут уже полегче малость - анимация всего одна.
Идем по известному пути ПКМ / Window / Animation / Animation и даем имя Door
Переносим спрайты двери в кадровое поле и меняем скорость с 60 на 20

-25

Остается поработать с дверью - разделим котлеты и мухи, так легче...
Создаем пустой объект с именем Doors и в него помещаем уже существующие элементы DoorNoy и Door, причем DoorNoy надо вывести из-под родительской опеки.
Тащим на сцену спрайт закрытой двери, даем имя DoorFaksh, форматируем по размеру Door и ставим на его место и делаем его дочерним объектом DoorNoy.
Добавляем элементу Doors BoxCollider2D триггерный и переносим сюда скрипты DoorOpen и LevelOut - настраиваем их

-26

Запускаем и проверяем работоспособность. Напомню - при наборе (у меня) 500 очков, дверь начнет активничать и при проходе через нее игрока, время остановится и откроется окно статистики, ну и при нажатии "Далее" произойдет переход на второй уровень.
Работает...

-27

Переходим к озвучке игрового процесса
В первую очередь нужна фоновая музыка. Таких музык будет 12, поэтому для порядка в папке Audio создаем папку SoundFon и в нее укладываем нужные треки, сразу все или по одному - без разницы

-28

Переносим нужный трек в иерархию и в инспекторе проверяем, что Play On Awake с чеком и Volume ставим 0,1

-29

Запускаем и проверяем, как на фоне музыки слышно звуки монеток. Если слышно слабо - убавляем уровень фона до нужной кондиции.Надо отметить, что при выходе в статистику, музыка будет продолжаться. Если это не нравится - в скрипте LevelOut надо внести две поправки: оформить переменную public GameObject "имя элемента" и в последней функции при выполнении условия записать строку "имя элемента".SetActive(false);
Музыка прервется при появлении статы.

Остается Регистрация рекорда уровня.
Вот только из без рекорда тут уже информации, что читать устанешь.
Рекорды сделаем потом - уровни создавать куда интереснее...

Остается позравить Вас, Уважаемые, 1 уровень готов!!!!!
И сразу отмечу, что остальные уровни, хоть и имеют свои тонкости, но это несравнимо проще и легче - основную базу мы уже сделали...

Часть 1 "Концепция игры" https://dzen.ru/a/ZGJVMZKsTRJ1IRxW

Часть 2.1 "Поиск и размещение" https://dzen.ru/a/ZGNW53IB3hJhklbs

Часть 2.2 "Настройка игровых элементов" Игрок, Задний фон, Кирпичики, Поле Канваса, Земля, Фон Канваса, Границы игрового поля https://dzen.ru/a/ZGTlEXyZok4KNcEk

Часть 2.3 "Настройка игровых элементов"
Платформы, Кирпичики, Кнопки управления, элементы Канваса
https://dzen.ru/a/ZG3owStvrRb4xElN

Часть 3.1 "Игрок - движение и прыжки" https://dzen.ru/a/ZJWHrGZylAw34K1k

Часть 3.2 "Игрок. Собиратель монеток. Дверь" https://dzen.ru/a/ZJrfjBv0yCUeuzCB

Часть 4 "Время, Статистика игры" https://dzen.ru/a/ZMotF8kxti_l2c5Q

Часть 5 "Собираем статистику в кучу" https://dzen.ru/a/ZYllpKSvuEWxQUwr

Часть 7 "Архитектура уровня" https://dzen.ru/a/ZZabxCoEzhElsLtF


Далее 2 уровень игры "Концепция и Архитектура"
https://dzen.ru/a/ZZ1VK3T9hVQpBm5W