Как пользоваться input manager в unity
Перейти к содержимому

Как пользоваться input manager в unity

  • автор:

Input Manager

The Input Manager is where you define all the different input axes and game actions for your project.

Input Manager

To see the Input Manager choose: Edit->Project Settings->Input.

Свойства

Свойство: Функция:
Axes Contains all the defined input axes for the current project: Size is the number of different input axes in this project, Element 0, 1, … are the particular axes to modify.
Name Название оси в лаунчере игры (game launcher) и скриптах.
Descriptive Name A detailed definition of the Positive Button function that is displayed in the game launcher.
Descriptive Negative Name A detailed definition of the Negative Button function that is displayed in the game launcher.
Negative Button Кнопка, которая будет отражать отрицательные значения на оси.
Positive Button Кнопка, которая будет отражать положительные значения на оси.
Alt Negative Button Дополнительная кнопка, которая будет отражать отрицательные значения на оси.
Alt Positive Button Дополнительная кнопка, которая будет отражать положительные значения на оси.
Gravity How fast will the input recenter. Only used when the Type is key / mouse button.
Dead Любое положительное или отрицательное значение, по модулю меньшее заданного числа, будет зафиксировано как нуль. Полезно для джойстиков.
Sensitivity В случае ввода с клавиатуры, большее значение (на оси) будет соответствовать более быстрой реакции. Меньшее значение будет соответствовать более сглаженному. В случае мышки, значение будет увеличивать фактическое смещение мышки.
Snap If enabled, the axis value will be immediately reset to zero after it receives opposite inputs. Only used when the Type is key / mouse button.
Invert Если включено, то инвертирует ось ввода.
Type Use Key / Mouse Button for any kind of buttons, Mouse Movement for mouse delta and scrollwheels, Joystick Axis for analog joystick axes and Window Movement for when the user shakes the window.
Axis Ось ввода с устройств (джойстик, мышка, геймпад и др.).
Joy Num Какой джойстик используется. По умолчанию считывание производится со всех джойстиков. Используйте это только в случае считывания с осей и не используйте для кнопок.

Детали

Все оси, которые вы настроили в Input Manager служат двум целям:

  • При скриптовании это позволит вам считывать значения с оси, посредством её имени
  • Это позволит игрокам вашей игры настроить управление на свой вкус

Все определенные оси будут представлены игроку в лаунчере игры, где игрок сможет увидеть имена осей, детальное описание осей и кнопки по умолчанию. Здесь игроки имеют возможность изменить любые кнопки, определенные на осях. Следовательно, лучше всего писать скрипты с использованием осей вместо отдельных кнопок, которые игрок может переназначить в вашей игре.

Input Manager

Input Manager это то, где вы можете задать различные оси ввода и игровые действия для своего проекта.

The Input Manager

To see the Input Manager choose: Edit > Project Settings > Input. Note that the Input clsss provides more details.

Свойства

Свойство: Функция:
Axes Содержит все оси ввода, определенные для текущего проекта: Size это количество различных осей ввода в проекте, Element 0, 1, … конкретные оси ввода, подлежащие модификации.
Имя Название оси в лаунчере игры (game launcher) и скриптах.
Descriptive Name Детальное определение функции Positive Button, которое отображается в лаунчере игры.
Descriptive Negative Name Детальное определение функции Negative Button, которое отображается в лаунчере игры.
Negative Button Кнопка, которая будет отражать отрицательные значения на оси.
Positive Button Кнопка, которая будет отражать положительные значения на оси.
Alt Negative Button Дополнительная кнопка, которая будет отражать отрицательные значения на оси.
Alt Positive Button Дополнительная кнопка, которая будет отражать положительные значения на оси.
Gravity Как быстро оси центрируются. Используйте только в случае, когда Type принимает значение key / mouse button.
Dead Любое положительное или отрицательное значение, по модулю меньшее заданного числа, будет зафиксировано как нуль. Полезно для джойстиков.
Sensitivity В случае ввода с клавиатуры, большее значение (на оси) будет соответствовать более быстрой реакции. Меньшее значение будет соответствовать более сглаженному. В случае мышки, значение будет увеличивать фактическое смещение мышки.
Snap Если включено, то при получении значения (с оси) с противоположным знаком оно будет сброшено к нулю. Используйте только в случае, когда Type принимает значение key / mouse button.
Invert Если включено, то инвертирует ось ввода.
Тип Для кнопок используйте Key / Mouse Button, для движения мышки или колесика мыши используйте Mouse Movement, для аналоговых осей джойстика используйте Joystick Axis, а если пользователь будет “дёргать” окошко используйте Window Movement.
Axis Ось ввода с устройств (джойстик, мышка, геймпад и др.).
Joy Num Какой джойстик используется. По умолчанию считывание производится со всех джойстиков. Используйте это только в случае считывания с осей и не используйте для кнопок.

Детали

Все оси, которые вы настроили в Input Manager служат двум целям:

  • При скриптовании это позволит вам считывать значения с оси, посредством её имени
  • Это позволит игрокам вашей игры настроить управление на свой вкус

Все определенные оси будут представлены игроку в лаунчере игры, где игрок сможет увидеть имена осей, детальное описание осей и кнопки по умолчанию. Здесь игроки имеют возможность изменить любые кнопки, определенные на осях. Следовательно, лучше всего писать скрипты с использованием осей вместо отдельных кнопок, которые игрок может переназначить в вашей игре.

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 Тип ввода, который управляет осью. Выберите из этих значений:

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

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

  • От –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 и соглашения об именах, указанные выше. Например:

Еще один способ получить доступ к ключам — использовать перечисление 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 будет двигаться с постоянной скоростью в каждом кадре.

Система ввода

Настраивайте элементы управления в одном месте, для всех платформ и устройств без дополнительных инструментов.

Легкость разработки для любой платформы

Система ввода — это основа интерактивности проектов с контентом реального времени. Благодаря нашей системе вы с легкостью сможете настроить управление для различных платформ, от мобильных устройств до VR.

Система Unity стандартизирует методы реализации управления и обеспечивает расширенную функциональность, недостижимую для базовых решений.

Вам достаточно привязать действия к логике кода, а затем включить различные устройства и варианты управления в визуальном интерфейсе окна Input Action. Система ввода также имеет API. Пакет Input System доступен в менеджере пакетов. Он авторизован для Unity 2019 LTS и более новых версий.

Быстрое и гибкое решение

Прочное основание

Мы создали систему ввода для поддержки современных и нестандартных устройств на основе трех главных принципов: простота использования, стабильность для разных платформ и гибкость.

Интуитивно понятный и гибкий процесс

Привязывайте управление к скриптам с помощью компонента Input Action. Он будет считывать схему Action Map и обеспечит обмен данными со скриптом посредством обратных вызовов. Создавайте различные схемы управления, разграничивайте управление для одновременной игры, реализуйте различные методы обмена данными.

В основе разработки Unity

Новая система задумывалась как замена предыдущей, и, хотя вы можете использовать в проекте обе, новые технологии Unity, например, UI Toolkit или DOTS, будут полностью поддерживаться именно новой системой ввода. Присоединяйтесь к обсуждению Input System на форуме и следите за новыми функциями.

Основные характеристики

Поддержка всех платформ Unity

Реализуйте стандартизированное управление для консолей, ПК, мобильных или XR-устройств. Различные схемы управления могут без проблем присутствовать в одном и том же проекте Unity, что делает кроссплатформенную разработку бесшовной, не говоря о поддержке нестандартных устройств.

Быстрая настройка в графическом интерфейсе

Единое окно Input Action позволяет добавлять поддержку различных способов управления и выполняемых ими действий путем создания ассета Input Map, который позже можно использовать с компонентом, который свяжет эти действия с логикой кода. Система ввода также предлагает инструменты для визуализации доступных устройств и органов управления.

Расширенная настройка в стандартной конфигурации

Переопределение на лету, управление для нескольких пользователей одновременно, различные схемы управления, удобная локальная многопользовательская игра, автоматическое определение устройств ввода, переопределение стандартных HID-устройств или ввод независимо от частоты кадров — это лишь некоторые инструменты, которые предлагает система для большинства задач проекта.

Ресурсы и проекты для начинающих

Документация включает руководства для начинающих и описывает большинство граничных сценариев. Кроме того, в пакет входят примеры проектов и инструменты. Все они доступны в менеджере пакетов. Мы также предлагаем обучающие материалы и учебный контент, а также специальный раздел форума для новостей.

Гибкость и расширяемость с помощью API

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

Доступ к исходному коду

С системой ввода поставляется полный исходный код для доступа к внутренним алгоритмам инструмента, благодаря чему вы можете принять участие в разработке с помощью репозитория на GitHub.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *