Průvodce portováním vstupů pro Unity
Vstupní logiku můžete přenést na Windows Mixed Reality pomocí jednoho ze dvou přístupů:
- Obecná rozhraní API Input.GetButton nebo Input.GetAxis pro Unity, která pokrývají více platforem.
- Rozhraní API UnityEngine.XRModule , která nabízejí bohatší data speciálně pro ovladače pohybu a ruce HoloLens.
Obecná rozhraní API Input.GetButton a Input.GetAxis
Unity v současné době používá svá obecná Input.GetButton
rozhraní a Input.GetAxis
rozhraní API k zveřejnění vstupu pro sadu Oculus SDK a sadu OpenVR SDK. Pokud už vaše aplikace používají tato rozhraní API pro vstup, představují tato rozhraní API nejjednodušší způsob podpory ovladačů pohybu v Windows Mixed Reality. Stačí přemapovat tlačítka a osy ve Správci vstupů.
Další informace najdete v tabulce mapování tlačítka a osy Unity a v přehledu běžných rozhraní UNITY API.
Důležité
Pokud používáte řadiče HP Reverb G2, další pokyny pro mapování vstupů najdete v tématu Řadiče HP Reverb G2 v Unity .
Vstupní rozhraní API XR
Verze Unity postupně ukončovaly XR. Rozhraní WSA API ve prospěch sady XR SDK. Pro nové projekty je nejlepší používat rozhraní API pro vstup XR od začátku. Další informace najdete v tématu Vstup Unity XR.
Pokud už vaše aplikace vytváří vlastní vstupní logiku pro každou platformu, můžete použít rozhraní API prostorového vstupu specifické pro Windows v oboru názvů UnityEngine.InputSystem.XR . Tato rozhraní API vám umožňují získat přístup k dalším informacím, jako je přesnost pozice nebo druh zdroje, abyste na HoloLensu oddělili ruce a ovladače.
Poznámka
Pokud používáte řadiče HP Reverb G2, všechna vstupní rozhraní API budou dál fungovat s výjimkou InteractionSource.supportsTouchpad
příkazu , který vrací hodnotu false bez dat touchpadu.
Pozice úchytu a pozice ukazatele
Windows Mixed Reality podporuje ovladače pohybu v různých formách. Návrh každého kontroleru se liší ve vztahu mezi polohou ruky uživatele a přirozeným směrem dopředu, který aplikace používají k ukazování při vykreslování kontroleru.
Pokud chcete tyto kontrolery lépe znázorňovat, můžete prozkoumat dva druhy pozic pro každý zdroj interakce: pozici úchytu a pozici ukazatele. Vyjadřujete všechny souřadnice pozice v souřadnicích světa Unity.
Pozice gripu
Pozice gripu představuje umístění buď dlaně ruky rozpoznané HoloLensem, nebo dlaně držící ovladač pohybu. Na imerzivních náhlavních soupravách použijte tuto pozici k vykreslení ruky uživatele nebo objektu, který drží v ruce uživatele, jako je meč nebo zbraň.
- Pozice rukojeti je centroid dlaně při přirozeném podržení ovladače, upraveno doleva nebo doprava na střed pozice v rukojeti.
- Pravá osa orientace rukojeti je paprsek, který je normální k vaší dlani, dopředu z levé dlaně, zpět od pravé, když zcela otevřete ruku, abyste vytvořili plochou pozici s pěti prsty.
- Osa orientace rukojeti vpřed je paprsek, který ukazuje dopředu trubicí tvořenou prsty bez palce, když částečně zavíráte ruku, jako by držel ovladač.
- Osa orientace úchytu nahoru je osa nahoru odvozená z definic doprava a dopředu.
Přístup k pozici gripu prostřednictvím XR Unity. Rozhraní API InputTracking.GetNodeStates , například XRNodeState.TryGetPosition nebo XRNodeState.TryGetRotation.
Pozice ukazatele
Pozice ukazatele představuje špičku kontroleru směřujícího dopředu. Tato pozice se nejlépe používá k ray cast pointingu v uživatelském rozhraní, když vykreslujete samotný model kontroleru.
Pozice ukazatele je v Unity k dispozici pouze prostřednictvím rozhraní API specifického pro Windows MR, sourceState.sourcePose.TryGetPosition/Rotation
které se předává InteractionSourceNode.Pointer
jako argument.