Найти в Дзене
MLLM

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

Код: в конце статьи Всем привет! Я ведущий программист команды PYSON. Мой основной язык C#. Работаю с игровыми движками Unity и Unreal Engine. В данной статье я вам расскажу про возможность реализации двойного прыжка в Unity. И так начнём! Для начало определимся как мы хотим реализовать двойной прыжок. Его можно сделать 2 способами, но мы выберем самый простой, понятный и лёгкий! А, что не менее важный, универсальный, т.к. он будет подходить к 2D и 3D проектам, а это на секундочку, не мало сэкономленного времени! И так, для начало создадим нужные нам переменные: int jumpforce --- задаём силу прыжка. bool isGrounded = true --- устанавливаем логическую переменную на проверку прикосновения с поверхностью/землёй. int jumps = 2 --- задаём количество прыжков. Так-же не забываем прописать Rigidbody для установки гравитации Прописываем Rigidbody в методе Start() для того, чтобы он определился с самого начала запуска. Внимание всё, что находится в методе Start() проигрывается только 1 раз пр

Код: в конце статьи

Всем привет! Я ведущий программист команды PYSON. Мой основной язык C#. Работаю с игровыми движками Unity и Unreal Engine. В данной статье я вам расскажу про возможность реализации двойного прыжка в Unity. И так начнём!

Для начало определимся как мы хотим реализовать двойной прыжок. Его можно сделать 2 способами, но мы выберем самый простой, понятный и лёгкий! А, что не менее важный, универсальный, т.к. он будет подходить к 2D и 3D проектам, а это на секундочку, не мало сэкономленного времени!

И так, для начало создадим нужные нам переменные:

-2

int jumpforce --- задаём силу прыжка.

bool isGrounded = true --- устанавливаем логическую переменную на проверку прикосновения с поверхностью/землёй.

int jumps = 2 --- задаём количество прыжков.

Так-же не забываем прописать Rigidbody для установки гравитации

-3

Прописываем Rigidbody в методе Start() для того, чтобы он определился с самого начала запуска. Внимание всё, что находится в методе Start() проигрывается только 1 раз при включении и всё!

-4

И так, теперь перейдем к прыжку! Создадим метод private void OnCollisionEnter(Collision collision) и в нём пропишем, что при соприкосновениями с коллизиями, количество прыжков снова становилось 2, и isGrounded равнялось true.

-5

Теперь самое важное! Создадим основной метод прыжка public void Jump() в нем мы и будем прописывать основную часть механики! Сперва напишем, что при каждом использовании прыжка у нас количество допустимых прыжков уменьшалось! Сделаем как "jumps--;", что делает данная функция? При каждом использовании прыжка она будет отнимать от указанного значения 1 вплоть до 0.

Далее делаем простую проверку, что если isGrounded = true и jumps больше 0. То тогда мы можем использовать функцию прыжка, или если jumps меньше или равен 0, то тогда мы не можем использовать данный метод и просто падаем в низ!

-6

Всё! Код работает! Теперь его осталось правильно подставить! Если прыжок на пк то делайте проверку нажатия на кнопку, а если на андроид, то проверку на тап по экрану, всё просто!

Вот как это выглядит на практике:

Спасибо, что дочитали до конца!

Код:

public Rigidbody rb;

public int jumpforce;

public bool isGrounded = true;

public int jumps = 2;

void Start()

{

rb = GetComponent<Rigidbody>();

}

private void OnCollisionEnter(Collision collision)

{

isGrounded = true;

jumps = 2;

}

public void Jump()

{

jumps--;

if (isGrounded && jumps > 0)

{

rb.AddForce(Vector2.up * jumpforce, ForceMode.Impulse);

} else if (isGrounded && jumps <= 0)

{

rb.AddForce(Vector2.up * jumpforce, ForceMode.Impulse);

isGrounded = false;

}

}