Indataporteringsguide för Unity
Du kan portera din indatalogik till Windows Mixed Reality med någon av två metoder:
- Unitys allmänna Input.GetButton - eller Input.GetAxis-API :er som sträcker sig över flera plattformar.
- UnityEngine.XRModule-API:er, som erbjuder mer omfattande data specifikt för rörelsekontrollanter och HoloLens-händer.
Allmänna INPUT.GetButton- och Input.GetAxis-API:er
Unity använder för närvarande sina allmänna Input.GetButton
API:er och Input.GetAxis
API:er för att exponera indata för Oculus SDK och OpenVR SDK. Om dina appar redan använder dessa API:er för indata är dessa API:er den enklaste vägen för att stödja rörelsestyrenheter i Windows Mixed Reality. Du behöver bara mappa om knappar och axlar i Indatahanteraren.
Mer information finns i mappningstabellen för Unity-knappen/axeln och översikten över Common Unity-API:er.
Viktigt
Om du använder HP Reverb G2-styrenheter läser du HP Reverb G2-styrenheter i Unity för ytterligare instruktioner för indatamappning.
API:er för XR-indata
Unity-versioner har fasat ut XR. WSA-API:er till förmån för XR SDK. För nya projekt är det bäst att använda XR-indata-API:er från början. Mer information finns i Unity XR-indata.
Om din app redan skapar anpassad indatalogik för varje plattform kan du använda Windows-specifika RUMsliga indata-API:er i UnityEngine.InputSystem.XR-namnområdet . Med dessa API:er kan du komma åt mer information, till exempel positionsprecision eller källtyp, för att skilja händer och kontrollanter åt på HoloLens.
Anteckning
Om du använder HP Reverb G2-styrenheter fortsätter alla indata-API:er att fungera förutom InteractionSource.supportsTouchpad
, som returnerar false utan pekplatta.
Greppa pose och pekare pose
Windows Mixed Reality stöder rörelsestyrenheter i olika formfaktorer. Varje kontrollants design skiljer sig åt i relationen mellan användarens handposition och den naturliga framåtriktade riktning som appar använder för att peka när kontrollanten återges.
För att bättre representera dessa kontrollanter kan du undersöka två typer av poser för varje interaktionskälla, greppposition och pekare. Du uttrycker alla posekoordinater i Unity World-koordinater.
Greppställning
Greppställningen representerar placeringen av antingen handflatan som identifierats av en HoloLens eller handflatan som håller i en rörelsekontrollant. På uppslukande headset använder du den här posen för att återge användarens hand eller ett föremål som hålls i användarens hand, till exempel ett svärd eller en pistol.
- Grepppositionen är palmcentroiden när styrenheten hålls naturligt, justerad vänster eller höger för att centrera positionen inom greppet.
- Grepporienteringens högra axel är den stråle som är normal för handflatan, framåt från vänster handflata, bakåt från höger handflata, när du helt öppnar handen för att bilda en platt femfingersställning.
- Grepporienteringens framåtaxel är den stråle som pekar framåt genom röret som bildas av dina icke-tumme fingrar när du stänger handen delvis, som om du håller styrenheten.
- Grepporienteringens uppåtaxel är uppaxeln som anges av definitionerna höger och framåt.
Få åtkomst till greppet via Unitys XR. InputTracking.GetNodeStates-API :er, till exempel XRNodeState.TryGetPosition eller XRNodeState.TryGetRotation.
Pekare
Pekaren representerar spetsen på styrenheten som pekar framåt. Den här posen används bäst för ray cast som pekar på användargränssnittet när du återger själva styrenhetsmodellen.
Pekarepositionen är endast tillgänglig i Unity via det Windows MR-specifika API:et, sourceState.sourcePose.TryGetPosition/Rotation
och skickas som InteractionSourceNode.Pointer
argument.