OVRInput.Update() и OVRInput.FixedUpdate() один раз за кадр в начале работы всех методов Update и FixedUpdate в скриптах, которые обрабатывают ввод или логику игры. Пример:public class XRInputManager : MonoBehaviour {
void Update() {
OVRInput.Update();
// Handle input logic here
}
void FixedUpdate() {
OVRInput.FixedUpdate();
// Handle physics-based input here
}
}
InputManager.asset вашего проекта.Get(): возвращает текущее состояние кнопки, оси или сенсорного датчикаGetDown(): возвращает информацию о том, была ли кнопка нажата в этом кадреGetUp(): возвращает информацию о том, была ли кнопка отпущена в этом кадреif (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, OVRInput.Controller.RTouch)) {
// Trigger pressed on right controller
}
OVRManager.display.RecenterPose(), чтобы сбросить позы контроллера и гарнитуры до текущего положения.GetLocalControllerPosition(): возвращает позицию в Vector3GetLocalControllerRotation(): возвращает ориентацию в QuaternionPrimary: левый контроллерSecondary: правый контроллерGet() которые обеспечивают доступ к разным наборам элементов управления, в том числе:| Управление | Перечисления |
|---|---|
OVRInput.Button | Традиционные кнопки на геймпадах, контроллерах и кнопка "Назад". |
OVRInput.Touch | Поверхности контроллера с поддержкой сенсорного управления. |
OVRInput.NearTouch | Поверхности контроллера, чувствительные к приближению. |
OVRInput.Axis1D | Одномерные элементы управления, такие как курки, которые сообщают о состоянии с плавающей запятой. |
OVRInput.Axis2D | Двухмерные элементы управления, в том числе джойстики. Представляет состояние Vector2. |
| Управление |
|---|
OVRInput.RawButton |
OVRInput.RawTouch |
OVRInput.RawNearTouch |
OVRInput.RawAxis1D |
OVRInput.RawAxis2D |
Touch), а также когда они находятся в непосредственной близости от этих поверхностей (NearTouch). Это позволяет обнаруживать несколько различных состояний взаимодействия пользователя с определенной поверхностью управления. Например, если указательный палец пользователя полностью удален с поверхности управления, NearTouch для этого управления будет сообщать false. Когда палец пользователя приближается к элементу управления и находится в непосредственной близости от него, NearTouch сообщит о приближении до того, как пользователь физически коснется элемента. Когда пользователь физически контактирует с контроллером, Touch для этого действия сообщит значение true. Когда пользователь нажмет на курок для указательного пальца, Button для этого действия сообщит значение true. Эти различные состояния можно использовать для точного обнаружения взаимодействия пользователя с контроллером и реализации различных схем управления.// returns true if the primary button (typically “A”) is currently pressed. OVRInput.Get(OVRInput.Button.One); // returns true if the primary button (typically “A”) was pressed this frame. OVRInput.GetDown(OVRInput.Button.One); // returns true if the “X” button was released this frame. OVRInput.GetUp(OVRInput.RawButton.X); // returns a Vector2 of the primary (typically the Left) thumbstick’s current state. // (X/Y range of -1.0f to 1.0f) OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick); // returns true if the primary thumbstick is currently pressed (clicked as a button) OVRInput.Get(OVRInput.Button.PrimaryThumbstick); // returns true if the primary thumbstick has been moved upwards more than halfway. // (Up/Down/Left/Right - Interpret the thumbstick as a D-pad). OVRInput.Get(OVRInput.Button.PrimaryThumbstickUp); // returns a float of the secondary (typically the Right) index finger trigger’s current state. // (range of 0.0f to 1.0f) OVRInput.Get(OVRInput.Axis1D.SecondaryIndexTrigger); // returns a float of the left index finger trigger’s current state. // (range of 0.0f to 1.0f) OVRInput.Get(OVRInput.RawAxis1D.LIndexTrigger); // returns true if the left index finger trigger has been pressed more than halfway. // (Interpret the trigger as a button). OVRInput.Get(OVRInput.RawButton.LIndexTrigger); // returns true if the secondary gamepad button, typically “B”, is currently touched by the user. OVRInput.Get(OVRInput.Touch.Two);
Get() также принимает необязательный параметр контроллера. Список поддерживаемых контроллеров определен в разделе "Контроллер перечисления" документа OVRInput.Get() не указан параметр контроллера, по умолчанию будет использоваться контроллер Active, который соответствует контроллеру, который последним сообщил о вводе пользователя. Например, пользователь может использовать пару контроллеров, отложить их и взять контроллер Xbox. В этом случае активный контроллер переключится на контроллер Xbox, как только пользователь начнет вводить данные с помощью этого контроллера. Текущий активный контроллер можно запросить с помощью OVRInput.GetActiveController(), а битовая маска всех подключенных контроллеров может быть запрошена с помощью OVRInput.GetConnectedControllers().// returns a float of the hand trigger's current state on the left controller. OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger, OVRInput.Controller.Touch); // returns a float of the hand trigger's current state on the right controller. OVRInput.Get(OVRInput.Axis1D.SecondaryHandTrigger, OVRInput.Controller.Touch);
OVRInput.Controller.Touch), либо по отдельности (с OVRInput.Controller.LTouch и RTouch). Это важно, потому что при указании LTouch или RTouch используется другой набор виртуальных сопоставлений ввода, что позволяет более удобно разрабатывать код ввода, не зависящий от руки.PrimaryHandTrigger с отдельными контроллерами, где Primary всегда сопоставляется с указанной рукой:// returns a float of the hand trigger's current state on the left controller. OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger, OVRInput.Controller.LTouch); // returns a float of the hand trigger's current state on the right controller. OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger, OVRInput.Controller.RTouch);
// public variable that can be set to LTouch or RTouch in the Unity Inspector public OVRInput.Controller controller; // returns a float of the hand trigger’s current state on the controller // specified by the controller variable. OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger, controller); // returns true if the primary button (“A” or “X”) is pressed on the controller // specified by the controller variable. OVRInput.Get(OVRInput.Button.One, controller);
OVRInput.Controller.Touch виртуальное сопоставление точно соответствует расположению элементов управления на типичном геймпаде для левой и правой руки.
OVRInput.Controller.LTouch или OVRInput.Controller.RTouch виртуальное сопоставление меняется, что позволяет реализовать привязку ввода независимо от руки. Например, один и тот же скрипт может динамически запрашивать левый или правый контроллер в зависимости от того, к какой руке он прикреплен, а Button.One соответствующим образом сопоставляется с кнопкой A или X.
