Inverse3 und VerseGrip Cursor
Das Haply Inverse Unity Package stellt spezialisierte Cursor-Komponenten für die Geräte Inverse3 und VerseGrip bereit, die eine präzise Steuerung und Interaktion innerhalb von Unity-Umgebungen ermöglichen. Diese Komponenten, Inverse3 Cursor und VerseGrip Cursor, passen Position und Rotation von Spielobjekten dynamisch an die Daten der jeweiligen Device Controller an.
Überblick
Cursor-Komponenten fungieren als Brücke zwischen den physischen Geräten Haply und virtuellen Spielobjekten in Unity. Sie übersetzen die Positions- und Rotationsdaten der Geräte in Bewegungen und Ausrichtungen der Spielobjekte. Diese Übersetzung ermöglicht es Anwendern, intuitiv mit der virtuellen Umgebung zu interagieren, wobei ihre physischen Bewegungen durch virtuelle Reaktionen abgebildet werden.
CursorBase-Klasse
Den Kern der Cursor-Komponenten bildet die Klasse CursorBase, die die grundlegende Funktionalität bereitstellt, welche Inverse3Cursor und VerseGripCursor gemeinsam nutzen.
Dazu gehören die Verwaltung der Geräteverknüpfung, die Instanziierung des Modells und die Steuerung der Sichtbarkeit.
Wichtige Eigenschaften und Methoden
- Device: Verknüpft den Cursor mit dem steuernden Gerät und wird zur Laufzeit automatisch gesetzt.
- ModelPrefab: Legt ein Prefab für das Cursor-Modell fest, das automatisch als untergeordnetes Objekt von
ModelParentinstanziiert wird. - ModelParent: Legt den übergeordneten Transform für das instanziierte Modell-Prefab fest. Ist er nicht gesetzt, wird standardmäßig der Transform des Cursors verwendet.
- Model: Verweist direkt auf ein bereits in der Szene vorhandenes Cursor-Modell. Ist dieses Feld gesetzt, wird die Instanziierung von
ModelPrefabübersprungen. - HideControllerModel: Steuert die Sichtbarkeit des Cursor-Modells und ermöglicht es, es je nach Anforderungen des Spiels dynamisch ein- und auszublenden.
- Radius: Gibt den Radius des Cursor-Modells an, sofern es sich um eine Kugel handelt. Er wird aus den Mesh-Grenzen des Modells berechnet.
- Smoothness:
PositionSmoothnessundRotationSmoothnessbieten Optionen zur Glättung der Position und Rotation des Cursors und verbessern so das Nutzungserlebnis.
Hinweis: Die korrekte Referenzierung des Cursor-Modells in der Cursor-Komponente ist entscheidend, um unerwartetes Verhalten zu vermeiden.

Das mit dem Haptic Rig erstellte Standard-Cursor-Modell zeigt farbige Punkte zur Darstellung der drei Achsen: Forward (blau), Up (grün) und Right (rot). Dies erleichtert die Visualisierung der Ausrichtung des Geräts in der virtuellen Umgebung. Bei einem kalibrierten VerseGrip sollte Forward mit der Zeigerichtung und Up mit der oberen Fläche übereinstimmen.
Inverse3-Cursor-Komponente
Inverse3Cursor ist speziell auf das Gerät Inverse3 ausgelegt und aktualisiert die lokale Position des Cursors in Unity, sodass sie die physische Position des Geräts widerspiegelt.
Die Einstellung PositionSmoothness ermöglicht es, die Glätte der Cursorbewegung anzupassen. Dadurch wird das Nutzungserlebnis verbessert, indem die Reaktionsfähigkeit des Cursors auf physische Bewegungen gesteuert wird.
VerseGrip-Cursor-Komponente
VerseGripCursor erweitert die Funktionalität auf das Gerät VerseGrip und aktualisiert die Rotation des Cursors in Unity, sodass sie die physische Rotation des Geräts widerspiegelt.
Die Einstellung useDeviceLocalSpace ermöglicht es, zwischen der Weltausrichtung und der Ausrichtung des übergeordneten Objekts zu wählen. Das erhöht die Gestaltungsflexibilität.
Die Einstellung RotationSmoothness steuert die Glätte der Cursorrotation und ermöglicht es Entwicklern, die Reaktionsfähigkeit des Cursors auf Änderungen der physischen Ausrichtung von VerseGrip fein abzustimmen.
Implementierungsdetails
Bei der Initialisierung instanziieren die Cursor-Komponenten das angegebene ModelPrefab als untergeordnetes Objekt von ModelParent, sofern Model nicht zugewiesen ist. So wird die visuelle Darstellung in der Szene sichergestellt.
Diese Komponenten synchronisieren sich mit den zugehörigen Device Controllern und passen Position und Rotation des Cursors in Echtzeit an die physischen Bewegungen des Geräts an.
Beide Komponenten können demselben GameObject zugewiesen werden, um dessen Position und Rotation zu steuern, oder unterschiedlichen GameObjects für getrennte Anwendungsfälle. So erhalten Entwickler ein vielseitiges Werkzeug, um immersive haptische Erlebnisse in Unity zu gestalten.