Greppa, hålla och kasta med interactables
Översikt
Mesh Interactables är ett system för att konfigurera objekt med Unity-skript som definierar interaktion med ett objekt eller avatarbeteende vid körning. Skripten definierar egenskaperna för det objekt som kan interageras med med XRI-interagerare. Mesh-verktygslådan innehåller skript av olika objekttyper som kan definieras. När ett projekt körs konfigureras alla nödvändiga prefabs och inställningar som krävs för att objekt eller avataren ska fungera enligt definitionen. Om du vill se en ungefärlig förhandsgranskning av hur dina interaktionsbara objekt kommer att se ut och kännas när de körs i Mesh-appen måste du konfigurera Uppspelningsläge med Mesh-emulering. Observera att IK-funktionerna som visas i Mesh-appen inte är tillgängliga i uppspelningsläge med Mesh-emulering.
Mesh-komponenten för interaktionsbar installation
Om du vill göra ett objekt interaktionsbart måste du lägga till mesh-komponenten För interaktionsbar installation .
I hierarkin väljer du objektet.
Klicka på knappen Lägg till komponent i Inspector och välj sedan Mesh Interactable Setup (Interaktionsbar installation).
Komponenten läggs till med standardegenskapen Interaktionsbar typ inställd på Basic. (Objekttyper förklaras i nästa avsnitt.)
Egenskaperna för en grupp med objekt som alla beter sig på samma sätt kan konfigureras med en överordnad Mesh-komponent för interaktionsbar installation . Egenskaperna tillämpas på alla underordnade objekt med stela kroppar vid körning genom att automatiskt lägga till en Mesh Interactable Body-komponent till varje underordnat objekt. Du kanske vill lägga till mesh-interaktionsbar brödtext manuellt för att använda Mesh-interaktionsbara objekt med visuella skript, till exempel med interaktionshändelser eller för att ändra den manipulerbara måltransformeringen via det visuella skriptet.
Anteckningar:
Mesh Interactable Body gör att varje interaktionsbar kropp kan bete sig oberoende av varandra.
En rigidbody måste läggas till i ett objekt om du vill att det ska vara fysikaktiverat.
Få hjälp
I komponenterna Mesh Interactables Setup och Mesh Interactable Body kan du klicka på knappen "?" för att navigera till en sida i Mesh-dokumentationen som innehåller hjälp för funktionen som knappen är ansluten till.
Interaktionsbara objekttyper
Det finns fyra objekttyper:
- Grundläggande
- Bökbart
- Utrustningsbar
- Kastbar
Så här väljer du en objekttyp:
- I komponenten Interaktionsbar mesh-konfiguration klickar du på listrutan Interaktionsbar typ och väljer sedan ett av de fyra alternativen.
Grundläggande
Som nämnts ovan är detta standardtypen. När användaren hovrar över eller väljer objektet kan det anropa återanrop och andra skript kan reagera. Om du till exempel har en knapp som du vill använda för att aktivera ett annat objekt lägger du till den här interaktionsbara typen till knappen med ett OnSelected-återanrop för att aktivera det andra objektet. Knappen kommer att vara helt interagerande bara genom att lägga till den här typen och en kolliderare; Du behöver inte göra något annat.
Obs! De andra tre interaktionsbara typerna – Manipulable, Equippable och Throwable (förklaras nedan) har samma attribut som basic-typen men med ytterligare funktioner.
Läs mer om inställningar för grundläggande objekttyp
Bökbart
Du kan flytta ett objekt av den här typen från ett avstånd. mer specifikt manipulerar du dess transformering vid körning och flyttar den genom rymden i slutet av en interaktionsstråle. Genvägskontroller är tillgängliga för att rotera eller översätta objektet. För manipulering av objekt i Mesh-appen kan du aktivera IK-inställningar för avatarhanden för att följa objektet. Manipulerbara objekt kräver inte en rigidbody, men du bör lägga till en om du vill att objekten ska ha fysikfunktioner.
Läs mer om inställningar för Manipulable-objekttyp
Utrustningsbar
Du kan hämta ett objekt av den här typen. I Mesh-termer säger vi att du "utrustar" objektet till din avatars hand. Om du vill utrusta ett objekt på datorn klickar du på objektet eller trycker på F medan objektet är markerat. Om du vill utrusta ett objekt på questen trycker du på gripknappen medan objektet är markerat. Utrustningsbara objekt innehåller inställningar för IK-mål för din avatars armposition medan objektet är utrustat. IK-målen är en förskjutning från avatarens bröstkorg; detta avgör vart handen går medan objektet hålls eller aktiveras.
Läs mer om inställningar för equippable-objekttyp
Kastbar
Som namnet antyder kan du hämta och kasta ett objekt av den här typen. När du har tagit tag i det kan du gå in i målläget genom att trycka på och hålla i den vänstra musknappen. Detta gör att din avatar arm att följa musen målet; för att kasta objektet släpper du vänster musknapp.
Läs mer om inställningar för typ av throwable-objekt
Gör objekt interagerande med visualiseringsskript
Alla komponenter i Interactables har interaktionsegenskaper och metoder som är tillgängliga för visualisering av skript så att du har ett obegränsat antal sätt att få dem att fungera tillsammans. Om du vill dra nytta av detta använder du komponenten Mesh Interactable Body i ett skriptdiagram med en nod till en tillgänglig egenskap, till exempel OnHovered eller OnSelected, ansluten till en OnStateChanged-nod . Följande skriptdiagram aktiverar till exempel cylindern medan knappen trycks ned och inaktiverar den när knappen släpps. Knappen är helt interagerande bara genom att lägga till skriptet och en kolliderare. Du behöver inte göra något annat.
Egenskaper för visuella skript
För alla interagerande kroppar:
- IsHovered (skrivskyddad) – Om din lokala avatar hovrar objektet eller inte.
- IsSelected (skrivskyddad) – Om någon avatar väljer objektet eller inte. När du kör i MeshBrowser kommer detta att nätverkas.
- IsSelectedLocally – om den lokala avataren väljer objektet eller inte.
- IsMine (skrivskyddad) – Sant för den sista avataren att välja eller utrusta objektet.
För utrustningsutrustning:
- EquippedAt (skrivskyddad) – Där det här objektet är utrustat – Ingen, DefaultHand, RightHand, LeftHand. När du kör i MeshBrowser kommer detta att nätverkas.
- EquipTime (skrivskyddad) – vilken tid det här objektet var utrustat. När du kör i MeshBrowser kommer detta att nätverkas.
- IsActivated (skrivskyddad) – Om det här objektet är i aktiverat tillstånd. Gäller endast för objekt som inte kan kastas. När du kör i MeshBrowser kommer detta att nätverkas.
- IsAiming (skrivskyddad) – Om den lokala avataren är i måltillståndet medan objektet hålls. Gäller endast för throwables.
- IsThrowing (skrivskyddad) – Om den lokala avataren aktivt genererar objektet. Gäller endast för throwables.
- IsEquipped (skrivskyddad) (skrivskyddad) – Om det här objektet för närvarande är utrustat av en avatar. När du kör i MeshBrowser kommer detta att nätverkas.
- IsThrowable – om det här objektet kan kastas.
- ThrowVelocity – hastigheten för att kasta objektet när det släpps.
För att manipulables ska ändra målpositionen:
- Målposition (skrivskyddad): Brödtextens målposition när standardläget för framtvingat läge används i Mesh-interaktionsbara egenskaper
- Målrotation (skrivskyddad): Brödtextens målrotation när standardläget för framtvingat läge används i Mesh-interaktionsbara egenskaper
- Ray Hit Position (skrivskyddad): Position av ray-cast träff av interageraren på kroppen
- Ray Hit Rotation (skrivskyddad): Växelverkarens rotation runt strålens riktning
- Ändrad målposition (läsning och skrivning): Används för att ange den nya målpositionen av det visuella skriptet. Detta åsidosätter standardmålpositionen. Bästa praxis är att åsidosätta den här egenskapen:
- Användning av i-tillstånd har ändrats för målpositionen. I det här fallet utlöser det visuella skriptet endast ett flöde när interageraren och den nya positionen har ändrats.
- Använda vid sen uppdatering. Om du behöver ändra måltransformen i varje bildruta gör du det i en sen uppdatering så att den nya måltransformen blir tillgänglig omedelbart i nästa bildruta.
- Ändrad målrotation (läsning och skrivning): Används för att ange den nya målrotationen av det visuella skriptet. Detta åsidosätter standardmålpositionen.