СОЗДАТЕЛЬ ГОЛОСА

Как построить идеальный прыжок

Вот несколько полезных советов, которые мы узнали при создании механики прыжков в нашей игре 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.