Partager via


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);
        }
    }
}

Voir aussi