Curseurs Inverse3 et VerseGrip
Le Haply Inverse Unity Package introduit des composants de curseur spécialisés pour les appareils Inverse3 et VerseGrip, permettant un contrôle et une interaction précis dans les environnements Unity. Ces composants, Curseur Inverse3 et Curseur VerseGrip, sont conçus pour ajuster dynamiquement la position et la rotation des objets de jeu en fonction des données provenant de leurs contrôleurs d'appareils correspondants.
Vue d'ensemble
Les composants de curseur servent de pont entre les appareils physiques Haply et les objets de jeu virtuels dans Unity, en traduisant les données de position et de rotation des appareils en mouvements et orientations des objets de jeu. Cette traduction permet aux utilisateurs d'interagir avec l'environnement virtuel de manière intuitive, en reflétant leurs mouvements physiques par des réponses virtuelles.
Classe CursorBase
Au cœur des composants de curseur se trouve la classe CursorBase, qui fournit les fonctionnalités de base partagées par Inverse3Cursor et VerseGripCursor.
Cela comprend la gestion de l'association avec l'appareil, l'instanciation du modèle et le contrôle de la visibilité.
Propriétés et méthodes clés
- Device : Associe le curseur à l'appareil qui le contrôle, défini automatiquement à l'exécution.
- ModelPrefab : Spécifie un préfabriqué (prefab) pour le modèle de curseur, instancié automatiquement en tant qu'enfant de
ModelParent. - ModelParent : Définit le transform parent du préfabriqué de modèle instancié. S'il n'est pas défini, il prend par défaut le transform du curseur.
- Model : Référence directement un modèle de curseur existant dans la scène. Si ce champ est défini, l'instanciation de
ModelPrefabest ignorée. - HideControllerModel : Contrôle la visibilité du modèle de curseur, permettant d'afficher ou de masquer celui-ci de façon dynamique selon les exigences du jeu.
- Radius : Représente le rayon du modèle de curseur s'il s'agit d'une sphère, calculé à partir des limites du maillage (mesh) du modèle.
- Smoothness :
PositionSmoothnessetRotationSmoothnessoffrent des options de lissage de la position et de la rotation du curseur, ce qui améliore l'expérience utilisateur.
Remarque : Un référencement adéquat du modèle de curseur dans le composant Curseur est essentiel pour éviter un comportement inattendu.

Le modèle de curseur par défaut, créé avec le Haptic Rig, comporte des points colorés représentant les trois axes : Avant (bleu), Haut (vert) et Droite (rouge). Cette conception facilite la visualisation de l'orientation de l'appareil dans l'environnement virtuel. Pour un VerseGrip calibré, Avant doit être aligné sur la direction de pointage, et Haut sur la face supérieure.
Composant de curseur Inverse3
Inverse3Cursor est destiné à l'appareil Inverse3 et met à jour la position locale du curseur dans Unity afin de refléter la position physique de l'appareil.
Le paramètre PositionSmoothness permet d'ajuster le lissage des mouvements du curseur, ce qui améliore l'expérience utilisateur en contrôlant la réactivité du curseur aux mouvements physiques.
Composant de curseur VerseGrip
VerseGripCursor étend les fonctionnalités à l'appareil VerseGrip, en mettant à jour la rotation du curseur dans Unity afin de refléter la rotation physique de l'appareil.
Le paramètre useDeviceLocalSpace permet de choisir l'alignement du curseur entre les orientations du monde ou celles de l'objet parent, offrant une plus grande souplesse de conception.
Le paramètre RotationSmoothness contrôle le lissage de la rotation du curseur, permettant aux développeurs d'ajuster finement la réactivité du curseur aux changements d'orientation physique du VerseGrip.
Détails d'implémentation
Lors de l'initialisation, les composants de curseur instancient le ModelPrefab spécifié en tant qu'enfant de ModelParent si Model n'est pas assigné, ce qui garantit une représentation visuelle dans la scène.
Ces composants se synchronisent avec leurs contrôleurs d'appareils associés, en ajustant la position et la rotation du curseur en temps réel selon les mouvements physiques de l'appareil.
Les deux composants peuvent être attachés au même GameObject pour contrôler sa position et sa rotation, ou à des GameObjects distincts pour des cas d'utilisation différents, offrant aux développeurs un outil polyvalent pour créer des expériences haptiques immersives dans Unity.