Перейти к содержимому

Getaxis unity что это

  • автор:

Input.GetAxis

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

Ошибка внесения изменений

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

Ваше имя Адрес вашей электронной почты Предложение * Разместить предложенное
public static function GetAxis ( axisName : string): float;
public static float GetAxis (string axisName );

Параметры

Описание

Возвращает значение по axisName виртуальной оси.

Для ввода с клавиатуры или джойстика значение будет лежать в диапазоне -1. 1. If the axis is setup to be delta mouse movement, the mouse delta is multiplied by the axis sensitivity and the range is not -1. 1.

Это не зависит от частоты кадров. При использовании данного значения нет необходимости беспокоиться об изменении частоты кадров.

// A very simplistic car driving on the x-z plane.

var speed : float = 10.0; var rotationSpeed : float = 100.0;

function Update () < // Get the horizontal and vertical axis. // By default they are mapped to the arrow keys. // The value is in the range -1 to 1 var translation : float = Input.GetAxis ("Vertical") * speed; var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed; // Make it move 10 meters per second instead of 10 meters per frame. translation *= Time.deltaTime; rotation *= Time.deltaTime; // Move translation along the object's z-axis transform.Translate (0, 0, translation); // Rotate around our y-axis transform.Rotate (0, rotation, 0); >
using UnityEngine; using System.Collections;

public class ExampleClass : MonoBehaviour < public float speed = 10.0F; public float rotationSpeed = 100.0F; void Update() < float translation = Input.GetAxis("Vertical") * speed; float rotation = Input.GetAxis("Horizontal") * rotationSpeed; translation *= Time.deltaTime; rotation *= Time.deltaTime; transform.Translate(0, 0, translation); transform.Rotate(0, rotation, 0); > >
// Performs a mouse look.

var horizontalSpeed : float = 2.0; var verticalSpeed : float = 2.0; function Update () < // Get the mouse delta. This is not in the range -1. 1 var h : float = horizontalSpeed * Input.GetAxis ("Mouse X"); var v : float = verticalSpeed * Input.GetAxis ("Mouse Y"); transform.Rotate (v, h, 0); >
using UnityEngine; using System.Collections;

public class ExampleClass : MonoBehaviour < public float horizontalSpeed = 2.0F; public float verticalSpeed = 2.0F; void Update() < float h = horizontalSpeed * Input.GetAxis("Mouse X"); float v = verticalSpeed * Input.GetAxis("Mouse Y"); transform.Rotate(v, h, 0); > >

Традиционный игровой ввод

Unity поддерживает ввод с клавиатуры, джойстика и гейпада.

Virtual axes and buttons can be created on the Input window, and end users can configure Keyboard input in a nice screen configuration dialog.

NOTE: This is a legacy image. This Input Selector image dates back to the very earliest versions of the Unity Editor in 2005. GooBall was a Unity Technologies game.

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

Virtual Axes

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

Каждый проект при создании содержит следующие оси ввода по умолчанию:

  • Horizontal и Vertical привязаны к w, a, s, d и клавишам направления.
  • Fire1, Fire2, Fire3 привязаны к клавишам Control, Option (Alt) и Command соответственно.
  • Mouse X и Mouse Y привязаны к перемещениям мыши.
  • Window Shake X и Window Shake Y привязаны к перемещению окна.

Добавление новых осей ввода

If you want to add new virtual axes go to the Edit > Project Settings menu, then select the Input category. Here you can also change the settings of each axis.

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

Свойство: Функция:
Name Имя, используемое для проверки этой оси из скрипта.
Descriptive Name Имя положительного значения, отображаемое на вкладке Input диалогового окна Configuration в автономных сборках.
Descriptive Negative Name Имя отрицательного значения, отображаемое на вкладке Input диалогового окна Configuration в автономных сборках.
Negative Button Кнопка, используемая для смещения значения оси в отрицательном направлении.
Positive Button Кнопка, используемая для смещения значения оси в положительном направлении.
Alt Negative Button Альтернативная кнопка, используемая для смещения значения оси в отрицательном направлении.
Alt Positive Button Альтернативная кнопка, используемая для смещения значения оси в положительном направлении.
Gravity Скорость в единицах в секунду, с которой ось возвращается в нейтральное положения, когда кнопки не нажаты.
Dead Размер аналоговой мертвой зоны. Все значения аналоговых устройств, попадающие в этот диапазон, считаются нейтральными.
Sensitivity Speed in units per second that the axis will move toward the target value. This is for digital devices only.
Snap Если включено, значение оси будет сбрасываться в ноль при нажатии кнопки в противоположном направлении.
Invert Если включено, Negative Buttons будут выдавать положительные значения, и наоборот.
Type Тип ввода, который будет управлять осью.
Axis Ось подключенного устройства, которая будет управлять этой осью.
Joy Num Подключенный джойстик, который будет управлять этой осью.

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

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

Вы можете запросить текущее состояние из скрипта так:

 value = Input.GetAxis ("Horizontal"); 

An axis has a value between –1 and 1. The neutral position is 0. This is the case for joystick input and keyboard input.

Однако изменения осей Mouse и Window Shake показывают, насколько мышь или окно сдвинулись по сравнению с последним кадром. Это значит, что они могут быть больше, чем 1 или меньше, чем –1, когда пользователь быстро двигает мышь.

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

Названия кнопок

Чтобы назначить кнопку оси, вам необходимо ввести имя кнопки в свойстве Positive Button или Negative Button в окне Inspector.

Keys (Клавиши)

Названия кнопок следуют этому соглашению:

  • Обычные клавиши“: ”a“, ”b“, ”c» …
  • Цифровые клавиши: “1”, “2”, “3”, …
  • Клавиши стрелок: “up”, “down”, “left”, “right”
  • Клавиши цифровой клавиатуры: “[1]”, “[2]”, “[3]”, “[+]”, “[equals]”
  • Клавиши модификаторов: “right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd”
  • Клавиши мыши: “mouse 0”, “mouse 1”, “mouse 2”, …
  • Кнопки джойстика (от любого джойстика): “joystick button 0”, “joystick button 1”, “joystick button 2”, …
  • Кнопки джойстика (от заданного джойстика): “joystick 1 button 0”, “joystick 1 button 1”, “joystick 2 button 0”, …
  • Специальные клавиши: “backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down”
  • Функциональные клавиши: “f1”, “f2”, “f3”, …

Названия, используемые для определения кнопок одни и те же при написании скриптов и в окне Inspector.

 value = Input.GetKey ("a"); 

Note also that the keys are accessible using the KeyCode enum parameter.

Руководство по переносу логики ввода для Unity

Вы можете перенести входную логику в Windows Mixed Reality, используя один из двух подходов:

  • Общие API-интерфейсы Unity Input.GetButton или Input.GetAxis , которые охватывают несколько платформ.
  • API-интерфейсы UnityEngine.XRModule, которые предлагают более широкие данные специально для контроллеров движения и рук HoloLens.

Общие API Input.GetButton и Input.GetAxis

В настоящее время Unity использует свои общие Input.GetButton api и Input.GetAxis API для предоставления входных данных для пакета SDK Oculus и Пакета SDK OpenVR. Если ваши приложения уже используют эти API для ввода, эти API являются самым простым способом поддержки контроллеров движения в Windows Mixed Reality. Вам просто нужно переназначить кнопки и оси в диспетчере ввода.

Если вы используете контроллеры HP Reverb G2, дополнительные инструкции по сопоставлению входных данных см . в разделе Контроллеры HP Reverb G2 в Unity .

Интерфейсы API ввода XR

В выпусках Unity был прекращен XR. API WSA в пользу пакета SDK для XR. Для новых проектов лучше использовать входные API XR с самого начала. Дополнительные сведения см. в разделе Входные данные XR Unity.

Если приложение уже создает пользовательскую логику ввода для каждой платформы, можно использовать API пространственного ввода для Windows в пространстве имен UnityEngine.InputSystem.XR . Эти API позволяют получить доступ к дополнительным сведениям, таким как точность положения или тип источника, чтобы отличить руки и контроллеры в HoloLens.

Если вы используете контроллеры HP Reverb G2, все входные API продолжают работать, за исключением InteractionSource.supportsTouchpad , который возвращает значение false без данных сенсорной панели.

Положение захвата и положение указателя

Windows Mixed Reality поддерживает контроллеры движения в разных форм-факторах. Дизайн каждого контроллера отличается своей связью между положением руки пользователя и естественным направлением вперед, которое приложения используют для указания при отрисовке контроллера.

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

Поза захвата

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

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

Положение указателя

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

Положение указателя доступно в Unity только через API windows MR, sourceState.sourcePose.TryGetPosition/Rotation который передается в InteractionSourceNode.Pointer качестве аргумента.

См. также раздел

  • Руководства по переносу приложений
  • Общие сведения о переносе
  • UnityEngine.XR.InputTracking
  • Контроллеры движения
  • Контроллеры движения в Unity

События Unity | C#

Как поймать событие Input.GetAxis в Unity? И, если можно, добавьте ссылку на документацию со всеми имеющимися событиями unity.

Отслеживать
задан 6 июл 2020 в 22:03
Sire IMPACTUS Sire IMPACTUS
97 1 1 серебряный знак 14 14 бронзовых знаков
Мне кажется, Input.GetAxis это не событие, а метод.
6 июл 2020 в 22:13
Это я знаю, но мне нужно событие именно этого метода.
6 июл 2020 в 22:23

Лучше просто скажите своими словами, что вы хотите сделать, потому что у методов не бывает событий. Событие это особый вид делегата, а делегат — особый вид метода. GetAxis() — обычный метод, и к делегатам никакого отношения не имеет.

6 июл 2020 в 22:38

Вангую! Хочет совместить работу Input.GetAxis() с другим UI аналогом для мобильника, что бы поддержывался и геймпад и тачскрин. И не смотря на то что мобильники стали основная платформа юнити, Input не обслуживает UI интерфейсы, только Touchs . Вот он и хочет понять, когда ловить инпуты с GetAxis , а когда с UI .

6 июл 2020 в 23:49

Нет, не то и не другое. Я хочу ловить нажатие AWSD и запускать соответствуещий метод. Это можно легко сделать в update или fixedUpdate, но я слышал, что есть способ с событиямия, поэтому хотелось его попробовать.

7 июл 2020 в 9:38

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Input.GetAxis возвращает число (текущая скорость на определенной оси), а чтобы это было событием нужно уже это реализовывать вручную. Но вообще все, что касается частого обновления, не очень то хорошо реализовывать через events, а input в особенности (проверено на собственном опыте).

Для кнопки задержка в .1s может и норм, но вот когда пытаешься удрать от врагов и управление работает с небольшой задержкой — это уже неприемлемо. Так что лучше тут воздержаться от использования событий.

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

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