我目前正在开发一个应用程序,我需要在用户的运动控制器上粘贴一些对象,但我似乎找不到获取参考的方法。
来自 VRTK,它在运行时间之外暴露了游戏对象,这对我来说是一个挑战。有没有更好的方法在 MRTK 上执行此操作?
要获取控制器的“代理”游戏对象,您可以使用下面的代码(参见它的第一部分,它使用了可视化工具的代理游戏对象)。
也可以获取指针的游戏对象(注意给定的控制器可能有很多指针)
如果其中一些术语令人困惑,我还建议您阅读以下内容: https ://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Architecture/InputSystem/Terminology.html
这解释了一些正在使用的术语以及它们如何相互关联。
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;
public class ControllerPointers : MonoBehaviour
{
private IMixedRealityInputSystem inputSystem = null;
/// <summary>
/// The active instance of the input system.
/// </summary>
protected IMixedRealityInputSystem InputSystem
{
get
{
if (inputSystem == null)
{
MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem);
}
return inputSystem;
}
}
// Update is called once per frame
void Update()
{
// Log something every 60 frames.
if (Time.frameCount % 60 == 0)
{
foreach (IMixedRealityController controller in InputSystem.DetectedControllers)
{
if (controller.Visualizer?.GameObjectProxy != null)
{
Debug.Log("Visualizer Game Object: " + controller.Visualizer.GameObjectProxy);
}
else
{
Debug.Log("Controller has no visualizer!");
}
foreach (IMixedRealityPointer pointer in controller.InputSource.Pointers)
{
if (pointer is MonoBehaviour)
{
var monoBehavior = pointer as MonoBehaviour;
Debug.Log("Found pointer game object: " + (monoBehavior.gameObject));
}
}
}
}
}
}
最后,您还可以随时从指针接口本身中获取位置/旋转/速度属性(即在上面的代码中,使用指针位置:https://microsoft.github.io/MixedRealityToolkit-Unity/api/Microsoft. MixedReality.Toolkit.Input.IMixedRealityPointer.html#Microsoft_MixedReality_Toolkit_Input_IMixedRealityPointer_Position )
检查 MRTK 求解器。 https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_Solver.html
本教程在第 4 步中描述了如何将立方体“粘贴”到控制器上。(听起来像你的问题) https://docs.microsoft.com/en-us/windows/mixed-reality/mrlearning-base-ch3
一旦你选择了手关节,你就可以选择你想要>立方体跟随的手的哪个部分。对于这个例子,我们将使用手腕。在 > 选项 Tracked Hand Joint 旁边,选择下拉菜单并选择 Wrist。
有两件事要提...我的自定义“控制器”有问题(我已经用 Oculus 手覆盖了默认控制器)另外检查您是否需要“手关节”(如教程中所示)或者是否要使用下拉列表中的“左侧运动控制器”条目。