Accès à l’état d’entrée dans MRTK — MRTK2
Il est possible d’interroger directement l’état de toutes les entrées dans MRTK en itérant sur les contrôleurs attachés aux sources d’entrée. MRTK fournit également des méthodes pratiques pour accéder à la position et à la rotation des yeux, des mains, de la tête et du contrôleur de mouvement.
Consultez la scène InputDataExample pour obtenir un exemple d’interrogation d’entrée à la fois par itération sur des contrôleurs et à l’aide de la InputRayUtils
classe .
Exemple : position d’accès, rotation de la tête, des mains, des yeux dans MRTK
La classe de InputRayUtils
MRTK fournit des méthodes pratiques pour accéder aux rayons de la main, à la tête, aux rayons du regard et aux rayons du contrôleur de mouvement.
Ajoutez ces espaces de noms à votre script :
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;
Exemple de code :
// Get the head ray
UnityEngine.Ray headRay = InputRayUtils.GetHeadGazeRay();
// Get the right hand ray
if (InputRayUtils.TryGetHandRay(Handedness.Right, out UnityEngine.Ray rightHandRay))
{
// Right hand ray is available
}
else
{
// Right hand ray is not available
}
Exemple : Position d’accès, rotation de tous les contrôleurs 6DOF actifs dans la scène
Ajoutez ces espaces de noms à votre script :
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
Exemple de code :
foreach (IMixedRealityController controller in CoreServices.InputSystem.DetectedControllers)
{
// Interactions for a controller is the list of inputs that this controller exposes
foreach (MixedRealityInteractionMapping interactionMapping in controller.Interactions)
{
// 6DOF controllers support the "SpatialPointer" type (pointing direction)
// or "GripPointer" type (direction of the 6DOF controller)
if (interactionMapping.InputType == DeviceInputType.SpatialPointer)
{
Debug.Log("Spatial pointer PositionData: " + interactionMapping.PositionData);
Debug.Log("Spatial pointer RotationData: " + interactionMapping.RotationData);
}
if (interactionMapping.InputType == DeviceInputType.SpatialGrip)
{
Debug.Log("Spatial grip PositionData: " + interactionMapping.PositionData);
Debug.Log("Spatial grip RotationData: " + interactionMapping.RotationData);
}
}
}