Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Input менеджер

Окно Диспетчер ввода позволяет определить оси ввода и связанные с ними действия для вашего проекта. Чтобы получить к нему доступ, в главном меню Unity выберите Правка > Настройки проекта, затем выберите Диспетчер ввода на панели навигации справа.

Диспетчер ввода использует следующие типы элементов управления:

  • Клавиша — это любая клавиша на физической клавиатуре, например W, Shift или пробел.
  • Под кнопкой понимается любая кнопка на физическом контроллере (например, геймпадах), например кнопка X на контроллере Xbox One.
  • Виртуальная ось (во множественном числе: оси) сопоставляется с элементом управления, например кнопкой или клавишей. Когда пользователь активирует элемент управления, ось получает значение в диапазоне [–1..1]. Вы можете использовать это значение в своих скриптахфрагмент кода, позволяющий создавать собственные компоненты, запускать игровые события, изменять компоненты свойства с течением времени и реагировать на пользовательский ввод любым удобным для вас способом. Подробнее
    См. в Словарь
    .

Виртуальные оси

Каждый проект, который вы создаете, имеет ряд входных осей, созданных по умолчанию. Эти оси позволяют сразу использовать ввод с клавиатуры, мыши и джойстика в проекте.

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

Каждая ось ввода имеет следующие свойства:

Свойства Функция
Name Имя оси. Вы можете использовать это для доступа к оси из скриптов.
Descriptive Name, Descriptive Negative Name Эти значения устарели и не работают. Раньше они отображались для пользователя на экране Rebind Controls при запуске, но этот экран также устарел.
Negative Button, Positive Button Элементы управления для перемещения оси в отрицательном и положительном направлении соответственно. Это могут быть клавиши на клавиатуре, кнопки на джойстике или мыши.
Alt Negative Button, Alt Positive Button Альтернативные элементы управления для перемещения оси в отрицательном и положительном направлении соответственно.
Gravity Скорость в единицах в секунду, с которой ось падает в нейтральное положение при отсутствии входных данных.
Dead Как далеко пользователь должен переместить аналоговый джойстик, прежде чем ваше приложение зарегистрирует движение. Во время выполнения ввод со всех аналоговых устройств, попадающих в этот диапазон, будет считаться нулевым.
Sensitivity Скорость в единицах в секунду, с которой ось будет двигаться к целевому значению. Это только для цифровых устройств.
Snap Если включено, значение оси будет сброшено до нуля при нажатии кнопки, соответствующей противоположному направлению..
Type Тип ввода, который управляет осью. Выберите из этих значений:

- Клавиша или кнопка мыши
- Движение мыши
- Ось джойстика

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

Значения оси могут быть:

  • От –1 до 1 для джойстика и ввода с клавиатуры. Нейтральное положение для этих осей — 0. Некоторые типы элементов управления, например кнопки на клавиатуре, не чувствительны к интенсивности ввода, поэтому они не могут выдавать значения, отличные от –1, 0 или 1.
  • Дельта мыши (насколько мышь переместилась в течение последнего кадра) для ввода с помощью мыши. Значения для осей ввода мыши могут быть больше 1 или меньше –1, когда пользователь быстро перемещает мышь.

Добавление, удаление и копирование виртуальных осей

Чтобы добавить виртуальную ось, увеличьте число в поле Размер. Это создает новую ось внизу списка. Новая ось копирует свойства предыдущей оси в списке.

Чтобы удалить виртуальную ось, вы можете:

  • Уменьшите число в поле Размер. Это удалит последнюю ось в списке.
  • Нажмите правой кнопкой мыши любую ось и выберите Удалить элемент массива.
    Примечание. Это действие нельзя отменить.

Чтобы скопировать виртуальную ось, щелкните ее правой кнопкой мыши и выберите Дублировать элемент массива.

Сопоставление виртуальных осей с элементами управления

Чтобы сопоставить клавишу или кнопку с осью, введите ее имя в свойство Положительная кнопка или Отрицательная кнопка в Диспетчере ввода.

Названия ключей соответствуют следующим соглашениям об именах:

Key family Соглашение об именовании
Letter keys a, b, c
Number keys 1, 2, 3
Arrow keys up, down, left, right
Numpad keys [1], [2], [3], [+], [equals]
Modifier keys right shift, left shift, right ctrl, left ctrl, right alt, left alt, right cmd, left cmd
Special keys backspace, tab, return, escape, space, delete, enter, insert, home, end, page up, page down
Function keys f1, f2, f3

Кнопки мыши называются mouse 0, mouse 1, mouse 2 и т. д.

Кнопки джойстика имеют следующие соглашения об именах:

Происхождение кнопки Соглашение об именовании
A specific button on any joystick joystick button 0, joystick button 1, joystick button 2
A specific button on a specific joystick joystick 1 button 0, joystick 1 button 1, joystick 2 button 0

Вы также можете запросить ввод для определенной клавиши или кнопки с помощью Input.GetKey и соглашения об именах, указанные выше. Например:

Input.GetKey("a");

Еще один способ получить доступ к ключам — использовать перечисление KeyCode.

Использование виртуальных осей в скриптах

Чтобы получить доступ к виртуальным осям из сценариев, вы можете использовать имя оси.

Например, чтобы запросить текущее значение горизонтальной оси и сохранить его в переменной, можно использовать Input. GetAxis вот так:

float horizontalInput = Input.GetAxis("Horizontal");

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

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

Например, вы можете создать две оси с именем Горизонтальная и назначить одну для ввода с клавиатуры, а другую — для ввода с помощью джойстика. Если пользователь использует джойстик, ввод осуществляется с джойстика, а ввод с клавиатуры невозможен. В противном случае ввод осуществляется с клавиатуры, а ввод с джойстика невозможен. Это позволяет вам написать один сценарий, охватывающий ввод с нескольких контроллеров.

Пример

Можно использовать данные из горизонтальной и вертикальной осей, а также transform.Translate для перемещения GameObjectосновного объекта в Сцены Unity, которые могут представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
Просмотреть в Словарь
в пространстве XZ (вперед, назад, влево или вправо) . Добавьте следующий код в метод update() в скрипте, прикрепленном к игровому объекту, который вы хотите переместить:

float moveSpeed = 10; //Define the speed at which the object moves. float horizontalInput = Input.GetAxis("Horizontal"); //Get the value of the Horizontal input axis. float verticalInput = Input.GetAxis("Vertical"); //Get the value of the Vertical input axis. transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * moveSpeed * Time.deltaTime); //Move the object to XYZ coordinates defined as horizontalInput, 0, and verticalInput respectively.

Time.deltaTime представляет время, прошедшее с момента последнего кадра. Умножение переменной moveSpeed на Time.deltaTime гарантирует, что GameObject будет двигаться с постоянной скоростью в каждом кадре.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3