Teleportation
Enkel setup
Det behöver finnas en Locomotion System-komponent och en Teleportation Provider-komponent nÄgonstans i scenen. Enklast Àr att bara lÀgga till dem i XR Origin-objektet.
SÄ lÀnge VR-handkontrollerna har Ray Interactors Àr detta den enda setup som behövs.
Videotips: https://www.youtube.com/watch?v=eI1cgiz2JSw
Giltiga mÄl för teleportationen
Det finns tvÄ sorters objekt som kan teleporteras till: Area och Anchor. I bÄda fallen genomförs teleportationen genom att spelaren markerar mÄlobjektet och trycker pÄ en knapp för att genomföra teleportationen.
Objekt med en Teleport Area-komponent lÄter spelaren teleporteras till den exakta punkt pÄ objektet som hen pekade pÄ. Oftast Àr detta ett objekt med ett Plane-mesh.
Objekt med en Teleport Anchor-komponent lÄter spelaren teleporteras till objektet mittpunkt.
De har ett antal viktiga instÀllningar gemensamma:
Interaction Layer Mask: För att skilja teleportation frÄn andra typer av interaktion kan det vara praktiskt att ge teleportations-mÄl ett eget Interaction Layer och se till sÄ att de enbart finns pÄ detta lager. Om du anvÀnder den fÀrdiga prefaben för din XR Rig sÄ utgÄr dess XR controllers frÄn att lager 31 Àr teleportationslagret.
Custom Reticle: Ett objekt som skapas nÀr spelaren markerar objektet och placeras dÀr hen planeras dyka upp efter teleportationen.
Teleportation Configuration Ă€r en liten undermeny â den viktigaste hĂ€r Ă€r nog Teleport Trigger, som Ă€r den hĂ€ndelse som fĂ„r teleportationen att utföras. HĂ€r kan man bara vĂ€lja mellan Select (greppknapp) och Activate (avtryckare).
Avancerad setup
Hela den hÀr delen Àr inspirerad av den hÀr videon: https://www.youtube.com/watch?v=9dc1zq8eH54
Ett vanligt sÀtt att dela upp interaktionen i VR-projekt Àr att lÄta anvÀndaren plocka upp saker och interagera med miljön med sina egna hÀnder (Direct Interaction), och anvÀnda VR-handkontrollens joystick för att teleportera (Ray interaction). Normalt kan man bara ha en sorts interactor per XR Controller.
Dela upp scenens interagerbara objekt via interaction layers. Ett exempel pÄ hur det kan göras Àr att skapa ett lager med namnet "intractables" och se till sÄ att alla vanliga interagerbara objekt Àr pÄ det lagret, men att inga av teleporterings-mÄlen Àr det.
De hÀr instruktionerna kommer att anvÀnda tvÄ fördefinierade InputActions som finns i XRI Default Input Actions-asseten: Locomotion/Teleport Mode Activate och Locomotion/Teleport Select. Det finns separata Input Actions för vÀnster och höger hand.
Normalt anropas Mode Activate av att spelaren drar styrspaken pÄ VR-handkontrollen framÄt, och Select anropas av att spelaren slÀpper styrspaken.
XR-controllers
Instruktionerna nedan beskriver hur Left Hand-controllern anpassas för det nya sÀttet att teleportera och interagera. Samma steg anvÀnds för Right Hand; det enda som behöver Àndras Àr vilket spelobjekt som modifieras och vilken hands kontroller och liknande som anvÀnds.
Markera XR Origin -> Camera Offset -> LeftHand Controller. Ta bort alla komponenter som har med Ray Interactorn att göra: XR Ray Interactor, XR Interactor Line Visual och Line Renderer.
LÀgg till en Direct Interactor och en Sphere Collider. VÀlj radie 0.1 för collidern och gör den till en trigger. Se till sÄ att Direct Interaction har med Interactable-lagret i sin Layer mask.
Högerklicka pÄ LeftHand Controller och vÀlj XR -> Ray Interactor (Action-based). Det lÀgger till ett nytt objekt under LeftHand Controller, med standardnamnet Ray Interactor. Tryck Enter för att acceptera namnet, och se till sÄ objektet Àr markerat.
Gör följande Àndringar:
Kryssa ur Enable Input Tracking. Objektet kommer redan att flyttas genom att det ligger under den vanliga LeftHand-controllern.
Kryssa ur Use Reference för Rotate Anchor Action och Translate Anchor Action. Den hÀr interactorn ska inte vrida och vÀnda pÄ objekt den interagerar med.
Se till sÄ Model Prefab Àr tom.
Skapa och lÀgg till RayToggler-scriptet (se nedan), och dra in XRI LeftHand Locomotion/Teleport Mode Activate till dess Input Action-referens.
RayToggler
Nedan finns ett exempel pÄ hur ett script för att vÀxla huruvida en Ray Interactor Àr aktiv (enabled) beroende pÄ en InputActions avfyrade actions.
Scriptet har alltsÄ en referens till en InputActionReference, som senare kopplas (enligt instruktionerna ovan) till XRI LeftHand Locomotion/Teleport Mode Activate eller dess högerhands-motsvarighet.
Den har ocksÄ en referens till den XRRayInteractor-komponent som ska aktiveras eller avaktiveras, och en bool-variabel som hÄller reda pÄ ifall den ska vara aktiveras eller avaktiverad just nu. RequireComponent anvÀnds ovanför klassdeklarationen för att sÀkerstÀlla att det alltid finns en sÄdan komponent.
NÀr objektet skapas, hÀmtar det en referens till interactorn.
NĂ€r scriptet aktiveras (OnEnable) sĂ„ lĂ€ggs metoden ToggleRay till InputActionens started och canceled-metoder, och nĂ€r det deaktiveras (OnDisable) sĂ„ tas den bort dĂ€rifrĂ„n. Det gör att det bara Ă€r nĂ€r scriptet Ă€r aktivt som det har nĂ„gon effekt â sĂ„ teoretiskt sett kan man bygga andra script som i sin tur aktiverar eller stĂ€nger av det hĂ€r scriptet.
ToggleRay-metoden ser helt enkelt till sÄ att isEnabled-variabeln har rÀtt vÀrde beroende pÄ om metoden avfyrades av att "knappen" trycktes ner (i det hÀr fallet: att styrspaken dras framÄt) eller av att den slÀpptes upp igen.
Sedan i LateUpdate, sÄ ser scriptet till sÄ att XRRayInteractor-komponentens lÀge synkas med isEnabled-variabeln.
Last updated