Condividi tramite


Guida alla conversione di input per Unity

È possibile convertire la logica di input in Windows Mixed Reality usando uno dei due approcci seguenti:

API Input.GetButton e Input.GetAxis generali

Unity usa attualmente le relative API e Input.GetAxis generali Input.GetButton per esporre l'input per Oculus SDK e OpenVR SDK. Se le app usano già queste API per l'input, queste API sono il percorso più semplice per supportare i controller di movimento in Windows Mixed Reality. È sufficiente rieseguire il mapping di pulsanti e assi in Gestione input.

Per altre informazioni, vedere la tabella di mapping pulsante/asse di Unity e la panoramica delle API di Common Unity.

Importante

Se si usano controller HP Reverb G2, vedere Hp Reverb G2 Controllers in Unity per altre istruzioni di mapping di input.

API di input XR

Le versioni di Unity hanno gradualmente escluso la versione XR. API WSA a favore di XR SDK. Per i nuovi progetti, è consigliabile usare le API di input XR dall'inizio. Per altre informazioni, vedere Unity XR Input.For more information, see Unity XR Input.

Se l'app compila già la logica di input personalizzata per ogni piattaforma, puoi usare le API di input spaziale specifiche di Windows nello spazio dei nomi UnityEngine.InputSystem.XR . Queste API consentono di accedere a altre informazioni, ad esempio l'accuratezza della posizione o il tipo di origine, per distinguere le mani e i controller in HoloLens.

Nota

Se si usano controller HP Reverb G2, tutte le API di input continuano a funzionare ad eccezione di InteractionSource.supportsTouchpad, che restituisce false senza dati del touchpad.

Posizione del grip e posizione del puntatore

Windows Mixed Reality supporta controller di movimento in fattori di forma diversi. La progettazione di ogni controller differisce nella relazione tra la posizione della mano dell'utente e la direzione di avanzamento naturale usata dalle app per puntare durante il rendering del controller.

Per rappresentare meglio questi controller, è possibile analizzare due tipi di pose per ogni origine di interazione, la posizione del grip e la posizione del puntatore. Tutte le coordinate di posa vengono espresse nelle coordinate del mondo unity.

Grip pose

La posizione dell'impugnatura rappresenta la posizione del palmo di una mano rilevata da un HoloLens o del palmo che contiene un controller di movimento. Nei visori vr immersivi, usare questa posa per eseguire il rendering della mano dell'utente o di un oggetto tenuto nella mano dell'utente, ad esempio una spada o una pistola.

  • La posizione della presa è il centroide palmo quando si tiene il controller naturalmente, regolato a sinistra o a destra per centrare la posizione all'interno della presa.
  • L'asse destro dell'orientamento della presa è il raggio normale al palmo, in avanti dal palmo sinistro, all'indietro dal palmo destro, quando apri completamente la mano per formare una posa piatta a cinque dita.
  • L'asse in avanti dell'orientamento della presa è il raggio che punta in avanti attraverso il tubo formato dalle dita non pollice quando si chiude parzialmente la mano, come se si tiene il controller.
  • L'asse superiore dell'orientamento del grip è l'asse verso l'alto implicito nelle definizioni destra e avanti.

Accedere alla posizione del grip tramite XR di Unity. API InputTracking.GetNodeStates , ad esempio XRNodeState.TryGetPosition o XRNodeState.TryGetRotation.

Posizione del puntatore

La posizione del puntatore rappresenta la punta del controller che punta in avanti. Questa posa è meglio usata per eseguire il ray cast che punta all'interfaccia utente quando si esegue il rendering del modello di controller stesso.

La posizione del puntatore è disponibile in Unity solo tramite l'API specifica di Windows MR, sourceState.sourcePose.TryGetPosition/Rotationpassando InteractionSourceNode.Pointer come argomento .

Vedere anche