Delen via


Toegang tot invoerstatus in MRTK — MRTK2

Het is mogelijk om rechtstreeks een query uit te voeren op de status van alle invoer in MRTK door de controllers te herhalen die zijn gekoppeld aan de invoerbronnen. MRTK biedt ook handige methoden voor toegang tot de positie en rotatie van de ogen, handen, hoofd en bewegingscontroller.

Zie de scène InputDataExample voor een voorbeeld van het uitvoeren van query's op invoer via iteratie via controllers en met behulp van de InputRayUtils klasse.

Voorbeeld: Toegangspositie, draaiing van hoofd, handen, ogen in MRTK

De MRTK-klasse InputRayUtils biedt handige methoden voor toegang tot de handstraal, hoofdstraal, oogklikken en bewegingscontrollerstralen.

Voeg deze naamruimten toe aan uw script:

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

Voorbeeldcode:

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

Voorbeeld: Toegangspositie, rotatie van alle 6DOF-controllers die actief zijn in scène

Voeg deze naamruimten toe aan uw script:

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

Voorbeeldcode:

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

Zie ook