gpt4 book ai didi

c# - Hololens 导航使用点击并按住手势错误?

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:12 30 4
gpt4 key购买 nike

使用 HoloToolkit 中的 InputManager 预制件 Assets 和实现代码用户可以点击并按住给定的对象,然后向左或向右移动手(沿 x 平面)以沿 Y 轴旋转对象或向上和向下(沿 y 平面)旋转对象X 轴上的对象。

但是似乎有一个错误。如果用户的视线离开物体,旋转会立即停止,直到用户的视线回到物体上。这是预期的功能吗?如果是这样,如何保留通过导航手势更改的当前对象并允许它继续被操纵直到用户的手离开 FOV 或用户释放点击并按住手势?

目标是利用点击并按住手势,但不要求用户在整个旋转过程中将目光锁定在对象上。这对于小的或形状笨拙的物体来说是相当困难的。

实现代码:

[Tooltip("Controls speed of rotation.")]
public float RotationSensitivity = 2.0f;

private float rotationFactorX, rotationFactorY;

public void OnNavigationStarted(NavigationEventData eventData)
{
Debug.Log("Navigation started");
}
public void OnNavigationUpdated(NavigationEventData eventData)
{
rotationFactorX = eventData.CumulativeDelta.x * RotationSensitivity;

rotationFactorY = eventData.CumulativeDelta.y * RotationSensitivity;

//control structure to prevent dual axis movement
if (System.Math.Abs(eventData.CumulativeDelta.x) > System.Math.Abs(eventData.CumulativeDelta.y))
{
//rotate focusedObject along Y-axis
transform.Rotate(new Vector3(0, -1 * rotationFactorX, 0));
}
else
{
//rotate focusedObject along X-axis
transform.Rotate(new Vector3(-1 * rotationFactorY, 0, 0));
}
}
public void OnNavigationCompleted(NavigationEventData eventData)
{
Debug.Log("Navigation completed");
}
public void OnNavigationCanceled(NavigationEventData eventData)
{
Debug.Log("Navigation canceled");
}

最佳答案

您需要调用这些方法:

    NavigationRecognizer = new GestureRecognizer();
NavigationRecognizer.SetRecognizableGestures(GestureSettings.Tap);
NavigationRecognizer.TappedEvent += NavigationRecognizer_TappedEvent;
ResetGestureRecognizers();

这是针对点击事件,但执行其他操作很简单,只需为它们添加事件回调并在 SetRecognizableGestures() 调用上使用 | 或选择器.例如

    NavigationRecognizer.SetRecognizableGestures(GestureSettings.Tap | GestureSettings.NavigationX);

关于c# - Hololens 导航使用点击并按住手势错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45338169/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com