Aceder ao estado de entrada no MRTK — MRTK2
É possível consultar diretamente o estado de todas as entradas no MRTK ao iterar sobre os controladores ligados às origens de entrada. O MRTK também fornece métodos de conveniência para aceder à posição e rotação dos olhos, mãos, cabeça e controlador de movimento.
Veja a cena InputDataExample para obter um exemplo de entrada de consulta, tanto através da iteração através de controladores, como através da InputRayUtils
classe.
Exemplo: Posição de acesso, rotação da cabeça, mãos, olhos no MRTK
A classe do InputRayUtils
MRTK fornece métodos de conveniência para aceder ao raio da mão, raios de cabeça, raios de olhar para os olhos e raios do controlador de movimento.
Adicione estes espaços de nomes ao script:
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;
Código de exemplo:
// 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
}
Exemplo: Posição de acesso, rotação de todos os controladores 6DOF ativos no local
Adicione estes espaços de nomes ao script:
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
Código de exemplo:
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);
}
}
}