3_Input и базовый контроллер персонажа

Урок 3 : Input и базовый контроллер персонажа

О чём этот урок

Работа с системой ввода Unity и сборка контроллера персонажа. Практика строит управление поверх физической основы из предыдущего урока: сначала отдельный скрипт чтения ввода, затем движение через Rigidbody, телепортация и продвинутый подбираемый объект.


Теория

Вопросы для самопроверки

  1. Через какой класс в Unity осуществляется работа с вводом в классическом подходе?
  2. В чём разница между методами Input.GetKey(), Input.GetKeyDown() и Input.GetKeyUp()?
  3. Чем отличается GetAxis от GetAxisRaw? Когда какой использовать?
  4. В каком методе жизненного цикла нужно обрабатывать ввод и почему?
  5. * Какие есть два вида системы ввода в Unity и как переключаться между ними в настройках?


Практика

Как выполнять задания

Продолжайте работу со сценой из урока 3. Для скриптов контроллера используйте папку Scripts.

Задания

Задание 1.

Напишите скрипт получения инпута персонажа и положите его на пустой объект сцены в иерархии LOGIC/InputSystem. Скрипт должен иметь свойства MoveHorizontalAxis (A/D), MoveVerticalAxis (W/S) и TurnAxis (Q/E или стрелки влево/вправо).

Задание 2.

Добавьте на сцену капсулу персонажа с Rigidbody (замороженное вращение по X и Z). Закрепите камеру позади капсулы. Дополнительно прикрепите к капсуле небольшой куб спереди, чтобы легко определять направление поворота со стороны. Создайте префаб персонажа.

Задание 3.

Напишите скрипт CharacterMovementController и поместите его на префаб персонажа. Скрипт должен получать ссылку на InputSystem и конвертировать ввод в физическое движение через Rigidbody. При отсутствии InputSystem на сцене - выводить ошибку в Console.

Задание 4.

Положите персонажа на сцену и проверьте работу контроллера. Убедитесь что стены и препятствия из урока 3 останавливают персонажа. Добавьте прыжок через AddForce(ForceMode.Impulse) - используйте isGrounded из урока 3 (задание 6) для ограничения прыжка только с земли.

Задание 5.

Добавьте возможность создать точку телепортации и телепортироваться в неё через Transform. Два действия - две кнопки. Визуал точки должен создаваться из префаба и быть неосязаемым для игрока (небольшая сфера с Is Trigger).

Задание 6.

** Сделайте простой собираемый объект. Объект уничтожается при нажатии кнопки сбора (добавить в InputSystem), когда игрок находится в радиусе от него. Определять радиус - через Physics.CheckSphere или сравнение расстояний. Упакуйте объект со скриптом в префаб для переиспользования.


📋 Вернуться к теории урока 3