Как сделать бесшовный переход к геймплею
При разработке Divinest Light я уделяю очень много внимания иммерсивности не только геймплея, но и элементам UI, таким как главное меню.
Вместо того, чтобы иметь стандартный скучный экран загрузки с затемнением экрана, почему бы не попытаться сделать бесшовный переход между меню и геймплеем?
Пример:
Мало того, что это выглядит интересно, так ещё и прекрасно встраивается в нарратив Divinest Light, где по сюжету герой буквально спускается с небес на землю с помощью таинственного луча.
В этой статье я хочу показать, как добиться такого перехода. Быть может, в вашему проекту тоже не хватает бесшовного перехода для еще большей атмосферы.
Сразу предупрежу, что моя игра — это 2D платформер, а не ААА шутер. Не думаю, что бесшовную загрузку можно будет с легкостью провернуть в огромной 3D игре.
Анимация
Сначала я сделал анимацию падения героя. В конце она плавно перетекает в базовую анимацию Idle, откуда начинаются геймплейные анимации. Это легко достигается с помощью Animator, где можно объединять разные анимации линиями, а Unity уже сам плавно сделает переход.
Добавив триггер в аниматор, я могу управлять, когда сменить анимацию левитации в воздухе на анимацию падения.
Затем, уже в самой анимации падения я добавил анимационные события, чтобы добавить звуки, эффекты, триггеры скриптов, и т.д. Очень полезная функция, только нужно присоединить скрипт с публичными функциями, чтобы их можно было вызвать из этой анимации.
Код
Самое главное, чтобы на разные чекпоинты можно было загрузиться одной анимацией, а не делать все вручную, ведь чекпоинтов у меня уже больше 10! Для этого нужно написать небольшой скрипт, который будет принимать номер чекпоинта, который нужно загрузить из главного меню, а затем уже перемещать персонажа на необходимую локацию и включать анимацию падения.
На самом деле, этот С# код довольно простой. По сути, он перемещает героя и окружение вокруг него по горизонтали на определённую точку на уровне, откуда уже начинается снижение и переход к геймплею. Уровень можно быть хоть сколько длинным, а чекпоинтов хоть бесконечно количество, и это будет работать.
Вот так выглядит та же анимация на другом чекпоинте:
Как видите, всё выглядит также плавно и естественно, ничего не нужно вручную менять.
В завершение
Вот таким нехитрым способом я реализовал бесшовный переход между меню и геймплеем в Divinest Light. Примерно также вы можете реализовать бесшовный переход в своей 2D игре, немного видоизменяя код и, конечно же, анимации.
Cпасибо за внимание!