Windows 混合现实 - AttachToController
Windows Mixed Reality - AttachToController
所以我正在使用 AttachToController 脚本附加一个浮动在控制器顶部的 window - 效果很好。在调用 window 的脚本中,我找出哪只手按下了控制器的菜单按钮,并适当地设置了“用手习惯”字段(左手或右手)。我要解决的问题是这样的:假设用户点击了右控制器的菜单按钮,然后又点击了左菜单按钮。我遇到的问题是,即使我已经更改了 Handedness 字段,window 仍然显示为连接到正确的控制器。
private void InteractionManager_InteractionSourcePressed(InteractionSourcePressedEventArgs args)
{
hand = args.state.source.handedness;
...
}
private void SetHandednessAndActivate(GameObject go)
{
AttachToController script = go.GetComponentInChildren<AttachToController>();
if (script != null)
{
script.Handedness = hand;
}
go.SetActive(true);
}
需要说明的是,如果用户先单击左侧控制器菜单按钮,则 window 始终位于左侧,右侧控制器也是如此。我想要的是 window 移动到使用的任何控制器。
而不是
script.Handedness = hand;
使用
script.ChangeHandedness(hand);
所有其他位均由脚本处理。
所以我正在使用 AttachToController 脚本附加一个浮动在控制器顶部的 window - 效果很好。在调用 window 的脚本中,我找出哪只手按下了控制器的菜单按钮,并适当地设置了“用手习惯”字段(左手或右手)。我要解决的问题是这样的:假设用户点击了右控制器的菜单按钮,然后又点击了左菜单按钮。我遇到的问题是,即使我已经更改了 Handedness 字段,window 仍然显示为连接到正确的控制器。
private void InteractionManager_InteractionSourcePressed(InteractionSourcePressedEventArgs args)
{
hand = args.state.source.handedness;
...
}
private void SetHandednessAndActivate(GameObject go)
{
AttachToController script = go.GetComponentInChildren<AttachToController>();
if (script != null)
{
script.Handedness = hand;
}
go.SetActive(true);
}
需要说明的是,如果用户先单击左侧控制器菜单按钮,则 window 始终位于左侧,右侧控制器也是如此。我想要的是 window 移动到使用的任何控制器。
而不是
script.Handedness = hand;
使用
script.ChangeHandedness(hand);
所有其他位均由脚本处理。