Accesso allo stato di input in MRTK — MRTK2

È possibile eseguire direttamente una query sullo stato di tutti gli input in MRTK eseguendo l'iterazione sui controller collegati alle origini di input. MRTK offre anche metodi pratici per accedere alla posizione e alla rotazione degli occhi, delle mani, della testa e del controller di movimento.

Vedere la scena InputDataExample per un esempio di query di input tramite iterazione dei controller e tramite la InputRayUtils classe .

Esempio: Posizione di accesso, rotazione della testa, mani, occhi in MRTK

La classe di InputRayUtils MRTK offre metodi pratici per accedere ai raggi della mano, al raggio della testa, al raggio oculare e ai raggi del controller di movimento.

// Get the head ray
var headRay = InputRayUtils.GetHeadGazeRay();

// Get the right hand ray
Ray rightHandRay;
if(InputRayUtils.TryGetHandRay(Handedness.right, rightHandRay))
{
    // Right hand ray is available
}
else
{
    // Right hand ray is not available
}

Esempio: Posizione di accesso, rotazione di tutti i controller 6DOF attivi nella scena

foreach(var controller in CoreServices.InputSystem.DetectedControllers)
{
    // Interactions for a controller is the list of inputs that this controller exposes
    foreach(MixedRealityInteractionMapping inputMapping in controller.Interactions)
    {
        // 6DOF controllers support the "SpatialPointer" type (pointing direction)
        // or "GripPointer" type (direction of the 6DOF controller)
        if (inputMapping.InputType == DeviceInputType.SpatialPointer)
        {
            Debug.Log("spatial pointer PositionData: " + inputMapping.PositionData);
            Debug.Log("spatial pointer RotationData: " + inputMapping.RotationData);
        }

        if (inputMapping.InputType == DeviceInputType.SpatialGrip)
        {
            Debug.Log("spatial grip PositionData: " + inputMapping.PositionData);
            Debug.Log("spatial grip RotationData: " + inputMapping.RotationData);
        }
    }
}

Vedi anche