Как сделать прыжок на Unity 3D

Всем добра! Рад видеть на этой странице) Сегодня, я попытаюсь объяснить, каким образом можно реализовать прыжок в Unity 3D, которую все мы так любим. Делать мы это будем на примере 2D проекта, однако для 3D мало что будет отличаться.

Итак, для начала определимся с тем что у нас будет в итоге. Персонаж будет работать по физике, то-есть на нем будет компонент RigidBody. Прыжок будем делать одиночный, если вам нужен двойной прыжок, можно будет разобрать его в следующей статье. Собственно больше ни чего не будет, дабы не отвлекаться ни на что кроме прыжка.

Настройка сцены для прыжков

Думаю персонаж будет выглядеть сегодня как то так.

Как сделать прыжок на Unity 3D
Персонаж из еще не вышедшей игры)

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

Как сделать прыжок на Unity 3D
С землей как то веселее!

Вроде-бы выглядит не плохо. Но если сейчас запустить игру то ни чего не будет происходить. Нужно ведь развесить коллайдеры и риджидбоди. Сделаем это.

На персонажа нужно повесить компонент RidgidBody и, к примеру, BoxCollider2d. А на землю только BoxCollider2D.

Как сделать прыжок на Unity 3D
Коллайдер нужно растянуть на всю поверхность
Как сделать прыжок на Unity 3D
так же и на персонаже
Как сделать прыжок на Unity 3D
Компоненты на персонаже
Как сделать прыжок на Unity 3D
компонент на земле

Земле нужно дать ТЕГ "ground", что-бы отличать от чего мы прыгаем.

Как сделать прыжок на Unity 3D

Ну вот, теперь если запустить игру, то все так-же ничего не произойдет, но теперь объекты на сцене подвержены физике.

Отлично! Теперь разберем алгоритм прыжка.

Если ( персонаж на земле и нажат пробел) 
        то прыгаем.
Иначе игнорируем пробел

Все просто, ни так ли? Но как определить на земле-ли персонаж, спросите вы?

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

Добавим на игрока еще один коллайдер и поставим галочку isTrigger. И перейдем, пожалуй, к скрипту.

Как сделать прыжок на Unity 3D
триггер нужно разместить под персонажем и не забыть про галочку is Trigger!

Скрипт

В Unity прыжок можно сделать так. Даем игроку пинок вверх и он летит! Если быть точнее, то в определенный момент нужно приложить к игроку вертикальную силу с типом Impuls. Далее будет скрипт с пояснениями. Создаем скрипт C# и бросаем его на игрока.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class jump : MonoBehaviour
{
    bool is_ground = false;     //переменная которая хранит в себе значение, "на земле ли игрок"
    Rigidbody2D player;         //так как мы часть обращаемся к физике, то не лишним будет закэшировать этот компонент
    public float force = 6;     //сила с которой будет прыгать персонаж

    void Start()
    {
        player = GetComponent<Rigidbody2D>(); //при старке сцены, получаем компонент и сохраняем в переменную
    }

    void OnTriggerStay2D(Collider2D col){               //если в тригере что то есть и у обьекта тег "ground"
        if (col.tag == "ground") is_ground = true;      //то включаем переменную "на земле"
    }
     void OnTriggerExit2D(Collider2D col){              //если из триггера что то вышло и у обьекта тег "ground"
        if (col.tag == "ground") is_ground = false;     //то вЫключаем переменную "на земле"
    }

    
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && is_ground)               //если нажата кнопка "пробел" и игрок на земле
            player.AddForce(Vector2.up * force, ForceMode2D.Impulse);   //то придаем ему силу вверх импульсным пинком
    }
}

Теперь, если запустить игру в редакторе, то можно попрыгать с помощью нажатий пробела! Великолепно! В Unity прыжок сделать совсем не сложно как оказалось))

На этом, урок можно завершить. Пишите, о чем еще хотели-бы прочитать на нашем сайте? И еще раз. Всем добра!)

Ссылка на Asset из урока: https://yadi.sk/d/BY0l_MYCRoFAWw

5/5 (2)

Оцените