Управление объектом
О чем ты узнаешь из видео:
✅ Теория Input
✅ Движение вверх при помощи кнопки
✅ Движение направо
✅ Передача ключа
Благодаря предыдущим урокам вы знаете что такое вектор и как написать постоянное изменение позиции игрового объекта. Сегодня научимся реализовывать движение объекта.
В этом видео будет много терминологии если вам нужна будет помощь в понимании термина - го в наш телеграмм канал, или вот ссылка на нашу книгу. Там все есть.
Теория Input
Управление объектом при помощи клавиш в Unity совершается с помощью класса Input. Всего есть 3 основных события (действия) которые связаны с кнопкой:
Нажатие
Удержание
Поднятие кнопки, то есть момент, когда мы перестаем ее удерживать.
Чтобы сделать действие, которое будет выполняться при срабатывании одного из этих событий надо написать условной оператор, в котором в качестве логического выражения, будет вызываться нужный метод из класса 'Input', возвращающий это логическое выражение (истину или ложь). Ниже, на примерах, будет яснопонятно.
Для обработки конкретной клавиши следует вызвать метод GetKey, скорее всего после этого ваш IDE, предложит на выбор три метода. По названию можно догадаться, за какое событие отвечает конкретный метод.
К примеру:
- Метод GetKeyDown - возвращает истину один раз, когда кнопка была отпущена
- Метод GetKey - возвращает истину постоянно пока, кнопка удерживается пользователем
- Метод GetKeyUp - возвращает истину один раз, когда кнопка была поднята.
После выбора нужного метода необходимо в качестве аргумента передать нужный ключ (имя кнопки). Это можно сделать при помощи строки или же при помощи перечисления KeyCode.
Лайхак: лучше передавать аргумент в качестве перечисления, так как при такой передаче, невозможно ошибиться в написании кнопки. А при не правильном написании код не скомпилируется и будет ошибка.
После передачи нужного ключа, останется только поставить фигурные скобочки для логического выражения. И уже в них можем написать интересующее нас действие.
Теперь давайте вернемся в проект и напишем перемещение объекта при помощи клавиш WASD.
Движение вверх при помощи кнопки
В прошлый раз мы писали код, который двигает объект с постоянной скоростью вверх, верно? Давайте сделаем так, чтобы эта строчка кода, вызывалась только тогда, когда мы зажимаем клавишу W.
Для этого, выше этой строчки сделаем условный оператор, в который поместим метод из класса Input, отвечающий за обработку зажатия клавиши. В качестве аргумента передадим ключ кнопки используя перечисление. Затем поставим фигурные скобочки и в них поместим строку кода, которая двигает объект вверх.
Сохраним скрипт, нажав горячие клавиши Ctr + Shift + S, откроем Unity и запустим проект в игровом режиме. Теперь при нажатии на клавишу W, объект будет двигаться вверх. Получилось?
Движение направо
Теперь давайте сделаем движения объекта вправо, при нажатии на клавишу D. Для этого пишем аналогичный код обработки удержание клавиши, но вместо клавиши W, ставим D.
Теперь, пишем строчку изменения позиции объекта вправо. Для этого обратимся к компоненту tranform, берем у него позицию и приравниваем его к вектору. По осиX приравниваем позицию к увеличенному значению текущей координаты, а по Y оставляем текущее значение.
Сохраним скрипт нажав горячие клавиши Ctr + Shift + S, откроем Unity и запустим проект в игровом режиме. Теперь при нажатии на клавишу W объект будет двигаться вверх, а на D - вправо.
Друзья, это уже 9 урок и вы уже обладаете нужным стеком знаний, поэтому открываем рубрику - "Домашние задание". Теперь, после каждой новой пройдённой темы, в конце урока будет упражнение, которое направлено на отработку полученных знаний. Напишите пожалуйста в комментариях, как вам идея.
Если вдруг, вы не знаете как сделать упражнение или у вас возникнет проблема - вы можете найти проект с готовым решением по ссылке.
Задание:
сделать движения 4 объектов при помощи клавиш WASD.
И на этом, урок подошел к концу, пожалуйста не забудьте оценить лайком и подписаться.