Guia de migração de entrada para o Unity
Pode migrar a lógica de entrada para Windows Mixed Reality através de uma de duas abordagens:
- ApIs Input.GetButton ou Input.GetAxis gerais do Unity que abrangem várias plataformas.
- As APIs UnityEngine.XRModule , que oferecem dados mais avançados especificamente para controladores de movimento e mãos do HoloLens.
APIs Input.GetButton e Input.GetAxis gerais
Atualmente, o Unity utiliza as suas APIs e Input.GetAxis
gerais Input.GetButton
para expor entradas para o SDK Oculus e o SDK OpenVR. Se as suas aplicações já utilizarem estas APIs para introdução, estas APIs são o caminho mais fácil para suportar controladores de movimento no Windows Mixed Reality. Só precisa de remaptar botões e eixos no Gestor de Entradas.
Para obter mais informações, veja a tabela de mapeamento do eixo/botão do Unity e a descrição geral das APIs comuns do Unity.
Importante
Se utilizar controladores HP Reverb G2, consulte HP Reverb G2 Controllers in Unity (Controladores HP Reverb G2 no Unity ) para obter mais instruções de mapeamento de entrada.
APIs de entrada XR
As versões do Unity eliminaram gradualmente o XR. APIs WSA a favor do SDK XR. Para novos projetos, é melhor utilizar as APIs de entrada XR desde o início. Para obter mais informações, veja Unity XR Input (Entrada XR do Unity).
Se a sua aplicação já criar lógica de entrada personalizada para cada plataforma, pode utilizar as APIs de entrada espacial específicas do Windows no espaço de nomes UnityEngine.InputSystem.XR . Estas APIs permitem-lhe aceder a mais informações, como a precisão da posição ou o tipo de origem, para distinguir as mãos e os controladores no HoloLens.
Nota
Se utilizar controladores HP Reverb G2, todas as APIs de entrada continuarão a funcionar, exceto para InteractionSource.supportsTouchpad
, o que devolve falso sem dados do touchpad.
Pose de aderência e pose de ponteiro
Windows Mixed Reality suporta controladores de movimento em fatores de forma diferentes. A estrutura de cada controlador difere na sua relação entre a posição da mão do utilizador e a direção de reencaminhamento natural que as aplicações utilizam para apontar ao compor o controlador.
Para representar melhor estes controladores, pode investigar dois tipos de poses para cada origem de interação, pose de aderência e pose de ponteiro. Expressa todas as coordenadas de pose nas coordenadas do mundo do Unity.
Pose de aderência
A posição de aderência representa a localização da palma de uma mão detetada por um HoloLens ou da palma da mão que segura um controlador de movimento. Nos auscultadores envolventes, utilize esta pose para compor a mão do utilizador ou um objeto na mão do utilizador, como uma espada ou arma.
- A posição de aperto é o centroide da palma da mão quando segura o controlador naturalmente, ajustado à esquerda ou à direita para centrar a posição dentro da aderência.
- O eixo direito da orientação da aderência é o raio normal para a palma da mão, para a frente a partir da palma da mão esquerda, para trás a partir da palma da mão direita, quando abre completamente a mão para formar uma pose plana de cinco dedos.
- O eixo avançado da orientação da aderência é o raio que aponta para a frente através do tubo formado pelos seus dedos que não sejam polegares quando fecha parcialmente a mão, como se segurasse o controlador.
- O eixo superior da orientação da aderência é o eixo superior implícito pelas definições certas e para a frente.
Aceda à postura de aderência através do XR do Unity. ApIs InputTracking.GetNodeStates , como XRNodeState.TryGetPosition ou XRNodeState.TryGetRotation.
Pose de ponteiro
A posição do ponteiro representa a ponta do controlador que aponta para a frente. Esta pose é melhor utilizada para fazer o ray cast apontar para a IU quando estiver a compor o próprio modelo de controlador.
A posição do ponteiro só está disponível no Unity através da API específica do MR do Windows, sourceState.sourcePose.TryGetPosition/Rotation
, transmitindo InteractionSourceNode.Pointer
como argumento.