【发布时间】:2017-07-26 22:02:13
【问题描述】:
使用来自HoloToolkit 资产和实现代码的 InputManager 预制件,用户可以点击并按住给定对象,然后向左或向右移动(沿 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");
}
【问题讨论】:
标签: c# unity3d gesture hololens