Share via


Acceso al estado de entrada en MRTK: MRTK2

Es posible consultar directamente el estado de todas las entradas en MRTK mediante la iteración de los controladores conectados a los orígenes de entrada. MRTK también proporciona métodos de conveniencia para acceder a la posición y rotación de los ojos, las manos, la cabeza y el controlador de movimiento.

Consulte la escena InputDataExample para obtener un ejemplo de consulta de entrada mediante iteración sobre controladores y mediante la InputRayUtils clase .

Ejemplo: Posición de acceso, rotación de la cabeza, manos, ojos en MRTK

La clase de InputRayUtils MRTK proporciona métodos de conveniencia para acceder al rayo de mano, el rayo de cabeza, el rayo de mirada ocular y los rayos del controlador de movimiento.

Agregue estos espacios de nombres al script:

using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;

Ejemplo de código:

// 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
}

Ejemplo: Posición de acceso, rotación de todos los controladores 6DOF activos en la escena

Agregue estos espacios de nombres al script:

using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;

Ejemplo de código:

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

Consulte también