3_Input и базовый контроллер персонажа
Урок 3 : Input и базовый контроллер персонажа
Работа с системой ввода Unity и сборка контроллера персонажа. Практика строит управление поверх физической основы из предыдущего урока: сначала отдельный скрипт чтения ввода, затем движение через Rigidbody, телепортация и продвинутый подбираемый объект.
Теория
- Через какой класс в Unity осуществляется работа с вводом в классическом подходе?
- В чём разница между методами
Input.GetKey(),Input.GetKeyDown()иInput.GetKeyUp()? - Чем отличается
GetAxisотGetAxisRaw? Когда какой использовать? - В каком методе жизненного цикла нужно обрабатывать ввод и почему?
*Какие есть два вида системы ввода в Unity и как переключаться между ними в настройках?
Практика
Продолжайте работу со сценой из урока 3. Для скриптов контроллера используйте папку Scripts.
Задания
Напишите скрипт получения инпута персонажа и положите его на пустой объект сцены в иерархии LOGIC/InputSystem. Скрипт должен иметь свойства MoveHorizontalAxis (A/D), MoveVerticalAxis (W/S) и TurnAxis (Q/E или стрелки влево/вправо).
Добавьте на сцену капсулу персонажа с Rigidbody (замороженное вращение по X и Z). Закрепите камеру позади капсулы. Дополнительно прикрепите к капсуле небольшой куб спереди, чтобы легко определять направление поворота со стороны. Создайте префаб персонажа.
Напишите скрипт CharacterMovementController и поместите его на префаб персонажа. Скрипт должен получать ссылку на InputSystem и конвертировать ввод в физическое движение через Rigidbody. При отсутствии InputSystem на сцене - выводить ошибку в Console.
Положите персонажа на сцену и проверьте работу контроллера. Убедитесь что стены и препятствия из урока 3 останавливают персонажа. Добавьте прыжок через AddForce(ForceMode.Impulse) - используйте isGrounded из урока 3 (задание 6) для ограничения прыжка только с земли.
Добавьте возможность создать точку телепортации и телепортироваться в неё через Transform. Два действия - две кнопки. Визуал точки должен создаваться из префаба и быть неосязаемым для игрока (небольшая сфера с Is Trigger).
** Сделайте простой собираемый объект. Объект уничтожается при нажатии кнопки сбора (добавить в InputSystem), когда игрок находится в радиусе от него. Определять радиус - через Physics.CheckSphere или сравнение расстояний. Упакуйте объект со скриптом в префаб для переиспользования.