Entwickeln
Entwickeln
Deine Plattform auswählen

Greifen-Interaktionen aus der Ferne mit den Händen

Aktualisiert: 07.08.2025

Designrichtlinie: Ein komfortables Hand-Tracking-Erlebnis ist für die Entwicklung von immersiven und unterhaltsamen Apps unerlässlich. Der Designleitfaden für Hand-Tracking enthält Informationen über Best Practices und darüber, wie du das Risiko verringern kannst, dass sich die Nutzer*innen nicht wohl fühlen.

Beim Greifen aus der Ferne mit den Händen kannst du Objekte außerhalb deiner Reichweite greifen und bewegen. Dabei ziehst du das Objekt normalerweise zunächst zu deiner Hand hin und greifst es dann wie bei einer normalen Greifen-Interaktion.
Hinweis: Wenn du noch nie mit dieser Meta XR-Funktion gearbeitet hast, empfehlen wir für den Einstieg die Verwendung von Building Blocks. Mit dieser Unity-Erweiterung für Meta XR SDKs kannst du deinem Projekt mühelos Funktionen hinzufügen.

DistanceHandGrabInteractor

„DistanceHandGrabInteractor“ ist die Interactor-Klasse für diese Interaktion. Analog zu HandGrabInteractor verwendet diese Klasse die Referenzen für Handgelenk, Greifen und PinchPoints aus der HandGrabAPI und kann eine synthetische Hand visuell angleichen. Der Unterschied besteht darin, wie passende Interactables erkannt werden.
DistanceHandGrabInteractor verwendet mehrere Sichtkegel, um die besten Interactables aus der Ferne zu erkennen und auszuwählen.
  • SelectionFrustum: Objekte in diesem Sichtkegel werden sofort überprüft und das am weitesten in der Mitte legende Objekt wird als Interactable ausgewählt. Dieser Sichtkegel sollte auf einen Punkt relativ zum Handgelenk zeigen, und nicht auf die Pointer Pose (Haltung der zeigenden Person).
  • Optional Deselection Frustum (Optionaler Abwahl-Sichtkegel): Wenn dieser Sichtkegel existiert, muss das ausgewählte Interactable diesen Sichtkegel anstelle des SelectionFrustum-Sichtkegels verlassen, um die Auswahl des Objekts aufzuheben. Dieser Kegel sollte breiter als SelectionFrustum sein. Auf diese Weise ist die Auswahl der Interactables „klebriger“, wenn sich keine besseren Interactables im Auswahlbereich befinden. Dieser Sichtkegel sollte auf einen Punkt relativ zum Handgelenk zeigen, und nicht auf die Pointer Pose (Haltung der zeigenden Person).
  • Optional Aid Frustum (Optionaler Hilfs-Sichtkegel): Wenn dieser Sichtkegel existiert, müssen sich Interactables sowohl im SelectionFrustum als auch in diesem Sichtkegel befinden, um ausgewählt werden zu können. Dieser Sichtkegel geht normalerweise vom Kopf aus.
    • Aid Blending (Hilfsüberblendung): Gibt an, wie zentral sich ein Interactable im Auswahl- oder Hilfs-Sichtkegel befinden muss, um ausgewählt zu werden. Akzeptiert Werte von 0 bis 1. 0 bedeutet, dass sich das Interactable in beiden Sichtkegeln befinden muss, aber die Auswahl danach getroffen wird, wie zentral es sich im SelectionFrustum befindet. 1 bedeutet, dass die Auswahl danach getroffen wird, wie zentral es sich im Hilfs-Sichtkegel befindet (Blickauswahl).
  • Detection Delay (Erkennungsverzögerung): Gibt an, wie lang (in Sekunden) das Interactable der beste Kandidat sein muss, um ausgewählt zu werden. Erhöhe diesen Wert, um das Risiko für Fehlerkennungen in Umgebungen mit vielen Objekten zu reduzieren.
Wie in der DistanceGrabExamples-Szene demonstriert, besteht der empfohlene Ansatz für die Konfiguration der Sichtkegel darin, die Sichtkegel für Auswahl und für das Aufheben der Auswahl auf einen Punkt relativ zum Handgelenk festzulegen (anstelle der Haltung der Person). Mit FilteredTransforms (gefilterte Transformationen) für die Ursprünge der Sichtkegel kannst du die Sichtkegel stabilisieren und gleichzeitig Drehungen des Handgelenks zulassen, um Interactables in der Nähe auszuwählen.

DistanceHandGrabInteractable

„DistanceHandGrabInteractable “ ist die Interactable-Klasse für diese Interaktion. Sie verwendet dieselben Felder wie HandGrabInteractable. Außerdem werden diese Felder kopiert, wenn du diese Klasse an ein GameObject anhängst, das bereits eine konfigurierte HandGrabInteractable-Komponente enthält.
Die DistanceHandGrabInteractable-Klasse verdankt ihre Vielseitigkeit dem Movement Provider-Feld, das angibt, wie sich das ausgewählte Interactable bewegt. Wenn kein Wert angegeben wird, bewegt sich das Interactable zum Interactor, bevor es sich an ihn anhängt und synchron mit ihm bewegt. Andere Verhaltensweisen sind ebenfalls möglich, und zusätzliche Verhaltensweisen können durch die Implementierung von IMovementProvider erstellt werden. Diese Verhaltensweisen befinden sich im Ordner Movements. Hier sind einige der wichtigsten Beispiele:
BewegungstypBewegungs-ProviderBeschreibung
Interactable zu Hand ziehen
MoveTowardsTarget
Bewirkt, dass sich das gegriffene Objekt von seinem aktuellen Ort zur Hand bzw. zum Controller bewegt, die bzw. der es gegriffen hat. Dabei werden die angegebene Geschwindigkeit (Travel Speed) und Angleichungskurve (Travel Curve) verwendet.
Interactable automatisch zu Hand ziehen
AutoMoveTowardsTarget
Dieses Verhalten ähnelt MoveTowardsTarget, mit dem Unterschied, dass die Bewegung zum Interactor auch dann abgeschlossen wird, wenn das Auswählen unterbrochen wird. Dieses Verhalten ist hilfreich, um mehrere Objekte schnell in Richtung des*der Nutzer*in zu bewegen.
Relativ zu Hand greifen
MoveFromTarget
Bewirkt, dass sich das gegriffene Objekt relativ zur Hand bzw. zum Controller bewegt, und zwar mit dem Abstand zum Zeitpunkt, an dem es gegriffen wurde. Das gegriffene Objekt kann manipuliert werden, aber der ursprüngliche Abstand bleibt erhalten.
An Ort und Stelle manipulieren
MoveAtSource
Verankert das interaktive Objekt an seiner aktuellen Position, wenn es gegriffen wird. Das gegriffene Objekt kann so manipuliert werden, als wäre die Hand automatisch zu seiner Position gesprungen und hätte es von dort aus bewegt.

Ray Visual (Strahlanzeige)

Ein DistantInteractionLineVisual zeichnet eine gepunktete Linie vom Interactor zum Interactable, auf das derzeit gezeigt wird, und kann als eine Art von Ghost-Fadenkreuz verwendet werden. Die Linie verwendet PolylineRenderer für ihre Darstellung, und du kannst das Material und die Linienstärke anpassen.
Ray Visual Action
Ray Visual Action
Ray Visual Action

Referenz

Referenzinformationen zu den beim Greifen aus der Ferne mit den Händen verwendeten Komponenten findest du unter den folgenden Links.