Вот пример того, как вы должны выполнить итерацию по всем контроллерам, найти сочлененные руки, которые являются лучами рук, и затем получить положение конечной точки (а также начальной точки луча) и, наконец, выяснить, является ли луч поражает геометрию (объект), так как имеет длину по умолчанию:
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;
public class HitPointTest : MonoBehaviour
{
// Update is called once per frame
void Update()
{
foreach(var source in MixedRealityToolkit.InputSystem.DetectedInputSources)
{
// Ignore anything that is not a hand because we want articulated hands
if (source.SourceType == Microsoft.MixedReality.Toolkit.Input.InputSourceType.Hand)
{
foreach (var p in source.Pointers)
{
if (p is IMixedRealityNearPointer)
{
// Ignore near pointers, we only want the rays
continue;
}
if (p.Result != null)
{
var startPoint = p.Position;
var endPoint = p.Result.Details.Point;
var hitObject = p.Result.Details.Object;
if (hitObject)
{
var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
sphere.transform.localScale = Vector3.one * 0.01f;
sphere.transform.position = endPoint;
}
}
}
}
}
}
}
Обратите внимание, что это для последней кодовой базы mrtk_development, также должно работать с RC1.