Всем добра! Рад видеть на этой странице) Сегодня, я попытаюсь объяснить, каким образом можно реализовать прыжок в Unity 3D, которую все мы так любим. Делать мы это будем на примере 2D проекта, однако для 3D мало что будет отличаться.
Итак, для начала определимся с тем что у нас будет в итоге. Персонаж будет работать по физике, то-есть на нем будет компонент RigidBody2D. Прыжок будем делать одиночный, если вам нужен двойной прыжок, можно будет разобрать его в следующей статье. Собственно больше ни чего не будет, дабы не отвлекаться ни на что кроме прыжка.
Настройка сцены для прыжков
Думаю наш 2D персонаж будет выглядеть сегодня как то так.
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/person.jpg)
Хм, персонаж есть, нужна поверхность по которой он будет прыгать. Да, ходить в этом уроке мы его учить не будем, и так сойдет, как говориться) Однако, это не сложно, и если кому то интересно, то можно написать статью и на эту тему.
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/annotaciya-2019-11-12-204651.jpg)
Вроде-бы выглядит не плохо. Но если сейчас запустить игру то ни чего не будет происходить. Нужно ведь развесить коллайдеры и риджидбоди. Сделаем это.
На персонажа нужно повесить компонент RidgidBody2D и, к примеру, BoxCollider2d. А на землю только BoxCollider2D.
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/kollajdery-1.jpg)
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/kollajdery-2.jpg)
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/annotaciya-2019-11-12-205247.jpg)
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/annotaciya-2019-11-12-205259.jpg)
Земле нужно дать ТЕГ "ground", что-бы отличать от чего мы прыгаем.
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2020/03/annotaciya-2020-03-19-223633.jpg)
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2020/03/annotaciya-2020-03-19-223736.jpg)
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/annotaciya-2019-11-12-212224.jpg)
Ну вот, теперь если запустить игру, то все так-же ничего не произойдет, но теперь объекты на сцене подвержены физике.
Отлично! Теперь разберем алгоритм прыжка.
Если ( персонаж на земле и нажат пробел)
то прыгаем.
Иначе игнорируем пробел
Все просто, ни так ли? Но как определить на земле-ли персонаж, спросите вы?
Для этого нужно добавить на персонажа триггер, который будет реагировать на землю и сообщать нам, что мы приземлились.
Добавим на игрока еще один коллайдер и поставим галочку isTrigger. И перейдем, пожалуй, к скрипту.
![Как сделать прыжок на Unity 3D](https://you-hands.ru/wp-content/uploads/2019/11/annotaciya-2019-11-12-210023-1024x485.jpg)
Скрипт
В 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