MRTK의 입력 상태 액세스

입력 소스에 연결 된 컨트롤러를 반복 하 여 MRTK의 모든 입력 상태를 직접 쿼리할 수 있습니다. 또한 MRTK는 눈, 손, 헤드 및 동작 컨트롤러의 위치와 회전에 액세스 하기 위한 편리한 방법을 제공 합니다.

컨트롤러를 반복 하 고 클래스를 사용 하 여 입력을 쿼리 하는 예제는 InputDataExample 장면을 참조 하세요 InputRayUtils .

예: 액세스 위치, 헤드, 손 방향 회전, MRTK의 눈

MRTK의 InputRayUtils 클래스는 손 모양, 헤드 광선, 눈 응시 레이 레이 및 모션 컨트롤러 광선에 액세스 하기 위한 편리한 메서드를 제공 합니다.

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

예: 액세스 위치, 장면에서 활성화 된 모든 6DOF 컨트롤러의 회전

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

참고 항목