СОЗДАТЕЛЬ ГОЛОСА
Как построить идеальный прыжок
Вот несколько полезных советов, которые мы узнали при создании механики прыжков в нашей игре The Lightbringer.
Самая важная особенность любой платформенной игры, без сомнения, - это прыжки. Мы потратили немало недель на то, чтобы улучшить ощущение механики прыжков. в нашей игре Светоносный.
Мы написали свои собственные контроллеры, протестировали существующие из магазина ресурсов и то и другое вместе. В конце мы использовали Lightbug Character Controller Pro в качестве основы и добавили наши собственные функции поверх него.
Чтобы помочь другим инди-разработчикам в их приключениях в создании классных игр, я хотел бы рассказать, как мы достигли (почти) идеального прыжка.
У нас есть 3 параметра, которые определяют, как далеко, высоко и быстро наш персонаж прыгает. Это JumpReach, JumpTime и JumpHeight.
Эти параметры устанавливает дизайнер при балансировке ощущений. Мы используем эти параметры для вычисления трех других свойств:
ForwardSpeed = 0,5f * JumpReach / JumpTime
Ускорение = 2 * Высота прыжка / (Время прыжка * Время прыжка)
InitialVelocity = ускорение * время прыжка
И эти свойства позволяют нам в любой момент вычислить 2 скорости:
Тот, который используется, когда игроки прыгают:
CurrentVelocity (время с плавающей запятой) = ›InitialVelocity - ускорение * Mathf.Abs (время);
А другой используется, когда пьесы падают:
CurrentDownVelocity (время с плавающей запятой) = ›ускорение * время;
Теперь мы можем использовать это для выполнения прыжков.
В начале прыжка мы устанавливаем нашу вертикальную скорость так:
VerticalMovement = Vector3.up * InitialVelocity;
Теперь мы начали процесс подпрыгивания. Теперь в FixedUpdate мы вычисляем текущие вертикальные и горизонтальные скорости следующим образом:
HorizontalMovement = direction * ForwardSpeed;
VerticalMovement = Vector3.up * CurrentVelocity (Time.time - jumpStartTime));
По прошествии половины времени, указанного в параметре «JumpTime», мы перестаем прыгать вверх. Здесь у вас есть выбор - если вы хотите, вы можете добавить короткое время «зависания в воздухе», мы используем 0.1f, в котором вы не двигаетесь ни вверх, ни вниз, а только вперед.
Затем мы начинаем процесс спрыгивания.
fallStartTime = 0f;
HorizontalMovement = 0f;
А теперь в FixedUpdate мы вычисляем текущие вертикальные и горизонтальные скорости следующим образом:
HorizontalMovement = direction * ForwardSpeed;
VerticalMovement = Vector3.down * CurrentDownVelocity (Time.time - fallStartTime);
И мы падаем, пока не обнаружим столкновение с землей.
И это все. Используя эти техники, вы можете создать действительно приятное ощущение прыжка.
Если у вас есть вопросы, не стесняйтесь прыгать на наш Discord. Вы также можете найти нас в Twitter, Instagram и Facebook.