Guía de portabilidad de entrada para Unity

Puede portar la lógica de entrada a Windows Mixed Reality mediante uno de los dos enfoques:

API General Input.GetButton y Input.GetAxis

Unity usa actualmente sus Input.GetButton API generales y Input.GetAxis para exponer la entrada para el SDK de Graphs y el SDK de OpenVR. Si las aplicaciones ya usan estas API para la entrada, estas API son la ruta de acceso más fácil para admitir controladores de movimiento en Windows Mixed Reality. Solo tiene que reasignar botones y ejes en el Administrador de entrada.

Para más información, consulte la tabla de asignación de ejes o botones de Unity y la información general de las API comunes de Unity.

Importante

Si usa controladores HP Reverb G2, consulte Controladores HP Reverb G2 en Unity para obtener más instrucciones de asignación de entrada.

API de entrada XR

Las versiones de Unity han quitado por fases la XR. API de WSA en favor del SDK de XR. En el caso de los nuevos proyectos, es mejor usar las API de entrada XR desde el principio. Para obtener más información, consulte Entrada XR de Unity.

Si la aplicación ya compila lógica de entrada personalizada para cada plataforma, puede usar las API de entrada espacial específicas de Windows en el espacio de nombres UnityEngine.InputSystem.XR . Estas API permiten acceder a más información, como la precisión de la posición o el tipo de origen, para distinguir las manos y los controladores en HoloLens.

Nota

Si usa controladores HP Reverb G2, todas las API de entrada seguirán funcionando excepto , InteractionSource.supportsTouchpadlo que devuelve false sin datos del panel táctil.

Posición de agarre y posición de puntero

Windows Mixed Reality admite controladores de movimiento en diferentes factores de forma. El diseño de cada controlador difiere en su relación entre la posición de la mano del usuario y la dirección hacia delante natural que las aplicaciones usan para apuntar al representar el controlador.

Para representar mejor estos controladores, puede investigar dos tipos de poses para cada origen de interacción, posición de agarre y posición de puntero. Expresa todas las coordenadas de posición en las coordenadas del mundo de Unity.

Posición de agarre

La posición de agarre representa la ubicación de la palma de una mano detectada por un HoloLens o de la palma que mantiene un controlador de movimiento. En cascos envolventes, usa esta posición para representar la mano del usuario o un objeto que se mantiene en la mano del usuario, como una espada o un arma.

  • La posición de agarre es el centroide de la palma cuando mantiene el controlador naturalmente, ajustado a la izquierda o derecha para centrar la posición dentro del agarre.
  • El eje derecho de la orientación de agarre es el rayo que es normal para la palma, hacia delante de la palma izquierda, hacia atrás desde la palma derecha, cuando abre completamente la mano para formar una posición plana de cinco dedos.
  • El eje hacia delante de la orientación del agarre es el rayo que apunta hacia delante a través del tubo formado por los dedos no pulgares cuando cierra la mano parcialmente, como si sostenía el controlador.
  • El eje ascendente de la orientación de agarre es el eje ascendente implícito en las definiciones derecha y hacia delante.

Acceda a la posición de agarre a través de la XR de Unity. API InputTracking.GetNodeStates , como XRNodeState.TryGetPosition o XRNodeState.TryGetRotation.

Posición del puntero

La posición del puntero representa la punta del controlador que apunta hacia delante. Esta posición se usa mejor para la conversión de rayos que apunta a la interfaz de usuario cuando se representa el propio modelo de controlador.

La posición del puntero solo está disponible en Unity a través de la API específica de MR de Windows, sourceState.sourcePose.TryGetPosition/Rotation, pasando InteractionSourceNode.Pointer como argumento.

Consulte también