Interacteurs
Un interacteur est le composant associé à votre main ou à votre manette qui déclenche toute action, comme une saisie, une téléportation ou un poke. Pour lancer une action, l’interacteur utilise des données d’entrée afin de déterminer où il se trouve dans l’espace de l’univers, puis utilise sa méthode ComputeCandidate() propre pour sélectionner un composant Interactable (capable d’interagir) de même type situé à proximité (par exemple, un interacteur de rayon sélectionne un composant unique capable d’interagir avec un rayon). La méthode d’IInteractorDrive() détermine à quel moment ComputeCandidate() doit s’exécuter, à quel moment une sélection doit avoir lieu, ce qui doit arriver lors d’une sélection, etc. Tous les interacteurs partagent la catégorie de base Interacteur, qui implémente IInteractor et, par extension, IInteractorView.
L’interface IInteractor expose les méthodes avec lesquelles vous pouvez modifier l’état d’une interaction. Il s’agit notamment des exigences et restrictions suivantes :
void Enable();
void Disable();
void Preprocess();
void Process();
void Postprocess();
void ComputeCandidate();
bool HasCandidate { get; }
object Candidate { get; }
bool ShouldHover { get; }
void Hover();
bool ShouldUnhover { get; }
void Unhover();
bool ShouldSelect { get; }
void Select();
bool ShouldUnselect { get; }
void Unselect();
bool ComputeShouldSelect()
bool ComputeShouldUnselect()
bool HasInteractable { get; }
bool HasSelectedInteractable { get; }
De plus, IInteractor expose plusieurs méthodes permettant d’obtenir une référence à un élément survolé ou sélectionné capable d’interagir, ainsi que des méthodes permettant d’obtenir et d’accepter les modifications d’InteractorState.
Tous les interacteurs du SDK implémentent IUpdateDriver et, par défaut, progressent en mettant à jour Unity.
Si vous choisissez de contrôler vous-même l’avancement d’un interacteur dans son cycle de vie (comme cela peut être le cas si vous intégrez les interacteurs à un projet existant ou une structure externe), vous pouvez configurer la propriété IsRootDriver sur Faux, puis invoquer directement les méthodes IInteractor d’un interacteur.
Un autre exemple de situation dans laquelle un
interacteur pourrait ne pas vouloir progresser lui-même par défaut est si son cycle de vie doit être coordonné et défini comme prioritaire par rapport à d’autres
interacteurs. À cette fin, un
InteractorGroup est recommandé pour conduire un
groupe d’interacteurs.
Un élément ISelector définit un mécanisme de sélection en vue d’une interaction (par ex., pression sur un bouton, pincement de l’index). Dans les cas où les interacteurs ne définissent pas eux-mêmes un mécanisme de sélection (Ray, Grab, par ex.), un élément ISelector peut être fourni pour ces interacteurs.
Pour obtenir des informations de référence sur les interacteurs, voir les liens ci-dessous.
- Pour en savoir plus sur les éléments capables d’interagir (Interactables), c’est-à-dire associé à des objets devant répondre à des interacteurs, voir la section Interactables.
- Pour un aperçu complet de l’architecture du SDK Interaction, voir Architecture Overview (Présentation de l’architecture).
- Pour savoir comment les interacteurs deviennent prioritaires lorsque plusieurs survols ont lieu simultanément, consultez la section InteractorGroup.
- Pour savoir comment est déterminé l’emplacement de votre main ou de la manette, voir Input Data Overview (Présentation des données d’entrée).